source: zero-lliurex-jclic-biblio/trunk/fuentes/zero-lliurex-jclic-biblio.install-files/usr/bin/zero-lliurex-jclic-biblio-setup @ 5470

Last change on this file since 5470 was 5470, checked in by jrpelegrina, 3 years ago

Upload elteumestre library version

  • Property svn:executable set to *
File size: 5.6 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*
3
4import os
5import sys
6import xmlrpclib
7import gi
8gi.require_version('Gtk', '3.0')
9gi.require_version('PangoCairo', '1.0')
10from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango
11import threading
12import xmlrpclib
13import lliurex.net
14import subprocess
15
16import signal
17signal.signal(signal.SIGINT, signal.SIG_DFL)
18
19import gettext
20gettext.textdomain('zero-lliurex-jclic-biblio')
21_ = gettext.gettext
22
23
24DESKTOP=0
25SERVER=1
26CLIENT=2
27
28CLIENT_BASE_DIR=os.path.expanduser("~/JClic/projects/")
29SERVER_BASE_DIR="/net/server-sync/share/jclic-aula/"
30#TEUMESTRE="elteumestre_JClic_Infantil_Primaria_13.7"
31TEUMESTRE="elteumestre_JClic_Infantil_Primaria_17"
32
33'''
34MURCIA="Murcia"
35JAUME="ratoli"
36'''
37
38class JclicRsrc:
39       
40        def __init__(self):
41               
42                self.n4d=xmlrpclib.ServerProxy("https://server:9779")
43               
44                self.t=threading.Thread()
45                self.internet_status=False
46                self.where_am_i=DESKTOP
47               
48                self.start_gui()
49               
50        #def
51       
52        def start_gui(self):
53               
54                builder=Gtk.Builder()
55                glade_path="/usr/share/zero-lliurex-jclic-biblio/rsrc/zero-jclic-library-setup.glade"
56                builder.set_translation_domain("zero-lliurex-jclic-biblio")
57                builder.add_from_file(glade_path)
58               
59               
60                self.main_window=builder.get_object("main_window")
61                self.pbar=builder.get_object("progressbar")
62                self.content_window=builder.get_object("content_window")
63                self.cancel_button=builder.get_object("cancel_button")
64                self.apply_button=builder.get_object("apply_button")
65                self.msg_label=builder.get_object("msg_label")
66               
67                self.teumestre_checkbutton=builder.get_object("teumestre_checkbutton")
68                '''
69                self.murcia_checkbutton=builder.get_object("murcia_checkbutton")
70                self.jaume_checkbutton=builder.get_object("jaume_checkbutton")
71                '''
72               
73                self.main_window.connect("destroy",self.quit)
74                self.content_window.connect("destroy",self.quit)
75                self.cancel_button.connect("clicked",self.quit)
76                self.apply_button.connect("clicked",self.apply_clicked)
77               
78               
79                self.main_window.set_name("WHITEWINDOW")
80                self.content_window.set_name("WHITEWINDOW")
81               
82                self.set_css_info()
83               
84                self.t=threading.Thread(target=self.check)
85                self.t.daemon=True
86                self.t.start()
87               
88
89                GLib.timeout_add(50,self.pulsate)
90               
91                self.main_window.show()
92                Gtk.main()
93               
94        #def start_gui
95       
96       
97        def set_css_info(self):
98               
99                css = """
100               
101                #WHITEWINDOW {
102                        background-image:-gtk-gradient (linear, left top, right top, from (#ceed85),  to (#dbf499));
103               
104                }
105               
106                GtkFrame{
107                        background-image:-gtk-gradient (linear, left top, left bottom, from (#ffdc5a),  to (#ffdc5a));
108                }
109               
110                #WHITEFONT {
111                        color: white;
112                        text-shadow: 0px 1px black;
113                }               
114               
115                """
116               
117                self.style_provider=Gtk.CssProvider()
118                self.style_provider.load_from_data(css)
119                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
120                               
121               
122               
123        #def set_css_info
124       
125       
126        def pulsate(self):
127               
128                if self.t.is_alive():
129               
130                        self.pbar.pulse()
131                else:
132                        self.pbar.set_fraction(1)
133                        self.main_window.hide()
134                        if self.internet_status:
135                               
136                               
137                               
138                                if self.where_am_i==SERVER:
139                                        self.mestre_dir=SERVER_BASE_DIR+TEUMESTRE
140                                        '''
141                                        self.murcia_dir=SERVER_BASE_DIR+MURCIA
142                                        self.jaume_dir=SERVER_BASE_DIR+JAUME
143                                        '''
144                                else:
145                                        self.mestre_dir=CLIENT_BASE_DIR+TEUMESTRE
146                                        '''
147                                        self.murcia_dir=CLIENT_BASE_DIR+MURCIA
148                                        self.jaume_dir=CLIENT_BASE_DIR+JAUME
149                                        '''
150                               
151                                print self.mestre_dir
152                               
153                                if os.path.exists(self.mestre_dir):
154                                        self.teumestre_checkbutton.set_active(True)
155                                '''
156                                if os.path.exists(self.murcia_dir):
157                                        self.murcia_checkbutton.set_active(True)
158                                if os.path.exists(self.jaume_dir):
159                                        self.jaume_checkbutton.set_active(True)
160                                '''
161
162                                self.content_window.show()
163                        else:
164                                self.msg_label.set_markup("<span forground='red'>"+"There is no internet connection."+"</span>")
165               
166                return self.t.is_alive()
167               
168        #def pulsate
169       
170        def check(self):
171               
172                import time
173               
174               
175                if lliurex.net.get_ip_from_host("www.google.es")!=None:
176                        self.internet_status=True
177               
178                if os.path.exists("/var/lib/n4d/variables-dir/REMOTE_VARIABLES_SERVER"):
179                        self.where_am_i=CLIENT
180                        os.environ["http_proxy"]="proxy:3128"
181                       
182                if os.path.exists("/var/lib/n4d/variables-dir/LDAP_BASE_DN"):
183                        self.where_am_i=SERVER
184                       
185                       
186                time.sleep(2)
187                       
188        #def check
189       
190        def apply_clicked(self,widget):
191               
192                self.apply_button.set_sensitive(False)
193                t=threading.Thread(target=self._execute)
194                t.daemon=True
195                t.start()
196               
197               
198        #def apply
199       
200        def _execute(self):
201               
202                command="zero-lliurex-jclic-biblio-downloader"
203               
204                cmd="http_proxy='%s' %s %s elteumestre %s"%(["","proxy:3128"][self.where_am_i==2],command,["remove","install"][self.teumestre_checkbutton.get_active()],[CLIENT_BASE_DIR,SERVER_BASE_DIR][self.where_am_i==1])
205                print "[!] CALLING",cmd
206                subprocess.call(cmd,shell=True,preexec_fn=lambda: signal.signal(signal.SIGPIPE,signal.SIG_DFL))
207                '''     
208                cmd="http_proxy='%s' %s %s murcia %s"%(["","proxy:3128"][self.where_am_i==2],command,["remove","install"][self.murcia_checkbutton.get_active()],[CLIENT_BASE_DIR,SERVER_BASE_DIR][self.where_am_i==1])
209                print "[!] CALLING",cmd
210                subprocess.call(cmd,shell=True,preexec_fn=lambda: signal.signal(signal.SIGPIPE,signal.SIG_DFL))
211               
212                cmd="http_proxy='%s' %s %s ratoli %s"%(["","proxy:3128"][self.where_am_i==2],command,["remove","install"][self.jaume_checkbutton.get_active()],[CLIENT_BASE_DIR,SERVER_BASE_DIR][self.where_am_i==1])
213                print "[!] CALLING",cmd
214                subprocess.call(cmd,shell=True,preexec_fn=lambda: signal.signal(signal.SIGPIPE,signal.SIG_DFL))
215                '''     
216                print "DONE"
217               
218                self.quit(None)
219               
220               
221        #def _execute
222       
223       
224        def quit(self,widget):
225               
226                Gtk.main_quit()
227                sys.exit(0)
228               
229        #def quit
230       
231       
232#class JclicRsrc
233
234
235
236if __name__=="__main__":
237       
238        jclic=JclicRsrc()
239       
Note: See TracBrowser for help on using the repository browser.