Changeset 7549


Ignore:
Timestamp:
Jun 27, 2018, 8:32:46 AM (16 months ago)
Author:
daduve
Message:

Adding files to GUI

Location:
home-eraser/trunk/fuentes/home-eraser.install/usr
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • home-eraser/trunk/fuentes/home-eraser.install/usr/sbin/home-eraser-gui

    r7454 r7549  
    33import sys
    44
    5 #sys.path.append('/usr/share/lliurex-perfilreset/')
    6 sys.path.append('/home/daduve/svn/xenial/home-eraser/trunk/fuentes/home-eraser.install/usr/share/home-eraser/')
     5sys.path.append('/usr/share/home-eraser/')
     6
    77import HomeEraser
    88
     
    1111        args={}
    1212        args["gui"]=True
     13        args["server"]="server"
    1314        ls=HomeEraser.HomeEraser(args)
  • home-eraser/trunk/fuentes/home-eraser.install/usr/share/home-eraser/HomeEraser.py

    r7454 r7549  
    1313import subprocess
    1414import os
     15import N4dManager
     16import xmlrpc.client
     17import ssl
     18import time
     19#import HomeEraserServer
    1520
    1621signal.signal(signal.SIGINT, signal.SIG_DFL)
    1722gettext.textdomain('lliurex-pefilreset')
    1823_ = gettext.gettext
    19 
    20 import time
    2124
    2225
     
    5053        time.sleep(self.delay)
    5154
     55
     56
     57
     58
     59
     60
    5261class HomeEraser:
    5362       
     63        net="net"
     64        home="home"
     65        students="students"
     66        teachers="teachers"
     67        admins="admins"
     68       
     69        detect_connected_clients_cancelled=False
     70       
     71        DEBUG=True
     72       
     73        def dprint(self,arg):
     74               
     75                if HomeEraser.DEBUG:
     76                        print("[HomeEraserGUI] %s"%arg)
     77               
     78        #def dprint
     79       
     80       
     81       
    5482        def __init__(self,args_dic):
    5583               
    5684                self.perfilreset_bin="/usr/sbin/home-eraser"
     85               
     86                self.n4d_man=N4dManager.N4dManager()
     87                self.n4d_man.set_server(args_dic["server"])
    5788               
    5889                if args_dic["gui"]:
     
    76107               
    77108                self.apply_button=builder.get_object("apply_button")
    78                
     109                self.checkb1 = builder.get_object("checkbutton1")
     110                self.checkb2 = builder.get_object("checkbutton2")
     111                self.checkb3 = builder.get_object("checkbutton3")
     112                self.checkb4 = builder.get_object("checkbutton4")
     113                self.checkb5 = builder.get_object("checkbutton5")
     114                self.checkb6 = builder.get_object("checkbutton6")
     115                self.num_clients_glade=builder.get_object("num_clients_glade")
    79116               
    80117                self.connect_signals()
     
    86123        def connect_signals(self):
    87124               
     125                # ####################
     126                #HACKED TESTING GUI
     127                self.login_clicked()
     128                # ######
     129               
    88130                self.main_window.connect("destroy",Gtk.main_quit)
    89131               
    90132                self.apply_button.connect("clicked",self.apply_button_clicked)
    91                 #self.reset_button.connect("clicked",self.reset_button_clicked)
     133               
    92134               
    93135        #def connect_signals
     
    96138        # SIGNALS ########################################################
    97139       
     140        #def login_clicked(self,widget):
     141       
     142        def login_clicked(self):
     143                # HACK
     144               
     145                user="lliurex"
     146                password="lliurex"
     147                server="localhost"
     148               
     149                self.user_val=[user,password]
     150                self.n4d_man.user_val=self.user_val
     151               
     152                self.n4d_man.get_client_list()
     153                       
     154               
     155               
     156                self.dprint("Clients connected: %s"%self.n4d_man.detected_clients)
     157                self.num_clients_glade.set_text(str(self.n4d_man.detected_clients))
     158               
     159                t2=threading.Thread(target=self.n4d_man.update_client_list_thread)
     160                t2.daemon=True
     161                t2.start()
     162               
     163                GLib.timeout_add(5000,self.client_list_listener)
     164               
     165                '''user=self.user_entry.get_text()
     166                password=self.password_entry.get_text()
     167                server=self.server_ip_entry.get_text()         
     168
     169                if server!="":
     170                        self.n4d_man.set_server(server)
     171               
     172               
     173                self.login_msg_label.set_text(_("Validating user..."))
     174               
     175                self.login_button.set_sensitive(False)'''
     176                #self.validate_user(user,password)
     177               
     178        #def login_clicked
     179               
     180       
     181       
     182        def client_list_listener(self):
     183               
     184                self.num_clients_glade.set_text(str(self.n4d_man.detected_clients))
     185                return True
     186               
     187        #def  client_list_listener
     188
     189
     190
    98191       
    99192        def apply_button_clicked(self,widget=True):
    100193               
    101                 print ("Process closed")
    102                 Gtk.main_quit()
    103                 sys.exit(0)
     194                try:                   
     195                       
     196                        delete={}
     197                        delete[self.home]=[]
     198                        delete[self.net]=[]
     199                       
     200                        info={}
     201                        info[self.students]={}
     202                       
     203                       
     204                        info[self.students][self.home]=self.checkb1.get_active()
     205                        if info[self.students][self.home]:
     206                                delete[self.home].append("students")
     207                        info[self.students][self.net]=self.checkb4.get_active()
     208                        if info[self.students][self.net]:
     209                                delete[self.net].append("students")
     210                        info[self.teachers]={}
     211                        info[self.teachers][self.home]=self.checkb2.get_active()
     212                        if info[self.teachers][self.home]:
     213                                delete[self.home].append("teachers")
     214                        info[self.teachers][self.net]=self.checkb5.get_active()
     215                        if info[self.teachers][self.net]:
     216                                delete[self.net].append("teachers")
     217                        info[self.admins]={}
     218                        info[self.admins][self.home]=self.checkb3.get_active()
     219                        if info[self.admins][self.home]:
     220                                delete[self.home].append("admins")
     221                        info[self.admins][self.net]=self.checkb6.get_active()
     222                        if info[self.admins][self.net]:
     223                                delete[self.net].append("admins")
     224                       
     225                       
     226                       
     227                        for g in info:
     228                                print(g)
     229                                for d in info[g]:
     230                                        print("\t %s : %s"%(d,info[g][d]))
     231
     232                        self.dprint("Summary to remove this elements: %s"%(delete))
     233                       
     234                        resume={}
     235                       
     236                        #DELETE LOCAL HOMES IN FAT CLIENTS
     237                        if ( len(delete[self.home] ) > 0 ):
     238                                ips_detele=self.n4d_man.ips_connected
     239                                self.dprint("Apply to clients: %s"%(ips_detele))
     240                                r=self.n4d_man.delete_clients_homes(self.user_val,ips_detele, delete[self.home])
     241                                if r[0]:
     242                                        #shared in resume all ips and paths deleted
     243                                        resume={**resume,**r[1]}
     244                       
     245                        #print resume home deleted in fat clients
     246                        if (  len(resume) >0 ):
     247                                self.dprint("")
     248                                self.dprint("Summary for HOMES deleted")
     249                                for i in resume:
     250                                        self.dprint("%s : %s"%(i,resume[i]))
     251                       
     252                       
     253                        #DELETE /NET DIRECTORIES
     254                        if ( len(delete[self.net] ) > 0 ):
     255                                r=self.n4d_man.delete_net_homes(self.user_val,delete[self.net])
     256                                if r[0]:
     257                                        self.dprint("")
     258                                        self.dprint("Summary for paths in /NET deleted:")
     259                                        for i in r[1]:
     260                                                self.dprint(i)
     261                                       
     262                                       
     263                        self.detect_connected_clients_cancelled=True
     264                        Gtk.main_quit()
     265                        sys.exit(0)
     266                       
     267                except Exception as e:
     268                        print ("[HomeEraserGUI] %s"%e)
     269                        return [False,str(e)]
    104270               
    105271        #def check_changes
    106        
    107        
    108        
    109        
    110         def reset_button_clicked(self,widget):
    111                 spinner = Spinner()
    112                 spinner.start()
    113                 subprocess.call("/usr/sbin/lliurex-perfilreset 1", shell=True)
    114                 os.system("pkill mate-panel")
    115                 time.sleep(3)
    116                 spinner.stop()
    117                 #print ("hola")
    118                
    119         #def reset_clicked
    120        
    121         # ##################### ##########################################
    122        
    123        
    124        
     272
     273
    125274#class LliurexPerfilreset
    126275
  • home-eraser/trunk/fuentes/home-eraser.install/usr/share/home-eraser/rsrc/home-eraser.ui

    r7454 r7549  
    3737          <packing>
    3838            <property name="expand">False</property>
    39             <property name="fill">True</property>
     39            <property name="fill">False</property>
    4040            <property name="position">0</property>
    4141          </packing>
    4242        </child>
    4343        <child>
    44           <object class="GtkGrid" id="grid1">
    45             <property name="visible">True</property>
    46             <property name="can_focus">False</property>
    47             <property name="margin_left">5</property>
    48             <property name="margin_right">5</property>
     44          <object class="GtkBox" id="box1">
     45            <property name="visible">True</property>
     46            <property name="can_focus">False</property>
    4947            <property name="margin_top">20</property>
    50             <property name="margin_bottom">10</property>
    51             <property name="column_spacing">50</property>
    5248            <child>
    5349              <object class="GtkBox" id="box2">
     
    113109                    <property name="can_focus">False</property>
    114110                    <property name="xpad">10</property>
    115                     <property name="label" translatable="yes">Borrar los datos de los administradores</property>
     111                    <property name="label" translatable="yes">Borrar los datos de los admin</property>
    116112                    <property name="xalign">0</property>
    117113                  </object>
     
    124120              </object>
    125121              <packing>
    126                 <property name="left_attach">0</property>
    127                 <property name="top_attach">0</property>
     122                <property name="expand">False</property>
     123                <property name="fill">True</property>
     124                <property name="position">0</property>
    128125              </packing>
    129126            </child>
     
    132129                <property name="visible">True</property>
    133130                <property name="can_focus">False</property>
    134                 <property name="column_spacing">20</property>
     131                <property name="halign">end</property>
     132                <property name="resize_mode">queue</property>
    135133                <property name="row_homogeneous">True</property>
    136134                <property name="column_homogeneous">True</property>
     
    158156                    <property name="halign">center</property>
    159157                    <property name="valign">center</property>
     158                    <property name="xpad">10</property>
    160159                    <property name="label" translatable="yes">Datos Servidor
    161160/net</property>
     
    278277              </object>
    279278              <packing>
    280                 <property name="left_attach">1</property>
    281                 <property name="top_attach">0</property>
    282               </packing>
    283             </child>
    284           </object>
    285           <packing>
    286             <property name="expand">True</property>
     279                <property name="expand">False</property>
     280                <property name="fill">True</property>
     281                <property name="pack_type">end</property>
     282                <property name="position">1</property>
     283              </packing>
     284            </child>
     285          </object>
     286          <packing>
     287            <property name="expand">False</property>
    287288            <property name="fill">True</property>
    288289            <property name="position">1</property>
     
    315316            <property name="fill">True</property>
    316317            <property name="pack_type">end</property>
    317             <property name="position">2</property>
     318            <property name="position">1</property>
    318319          </packing>
    319320        </child>
     
    334335        </child>
    335336        <child>
    336           <object class="GtkLabel" id="label8">
    337             <property name="visible">True</property>
    338             <property name="can_focus">False</property>
    339             <property name="halign">start</property>
    340             <property name="xpad">15</property>
    341             <property name="ypad">5</property>
    342             <property name="label" translatable="yes">Clientes pesados conectados : %s</property>
    343             <property name="xalign">0</property>
    344             <property name="yalign">0</property>
     337          <object class="GtkBox" id="box3">
     338            <property name="visible">True</property>
     339            <property name="can_focus">False</property>
     340            <child>
     341              <object class="GtkLabel" id="label8">
     342                <property name="visible">True</property>
     343                <property name="can_focus">False</property>
     344                <property name="halign">start</property>
     345                <property name="xpad">15</property>
     346                <property name="ypad">5</property>
     347                <property name="label" translatable="yes">Clientes pesados conectados :</property>
     348                <property name="xalign">0</property>
     349                <property name="yalign">0</property>
     350              </object>
     351              <packing>
     352                <property name="expand">False</property>
     353                <property name="fill">True</property>
     354                <property name="padding">5</property>
     355                <property name="position">0</property>
     356              </packing>
     357            </child>
     358            <child>
     359              <object class="GtkLabel" id="num_clients_glade">
     360                <property name="visible">True</property>
     361                <property name="can_focus">False</property>
     362                <property name="label" translatable="yes">0</property>
     363              </object>
     364              <packing>
     365                <property name="expand">False</property>
     366                <property name="fill">True</property>
     367                <property name="position">1</property>
     368              </packing>
     369            </child>
    345370          </object>
    346371          <packing>
    347372            <property name="expand">False</property>
    348373            <property name="fill">True</property>
    349             <property name="padding">5</property>
    350374            <property name="position">4</property>
    351375          </packing>
Note: See TracChangeset for help on using the changeset viewer.