Changeset 7918


Ignore:
Timestamp:
Aug 6, 2018, 2:07:16 PM (15 months ago)
Author:
Juanma
Message:

Add missing images

File:
1 edited

Legend:

Unmodified
Added
Removed
  • repoman/trunk/fuentes/src/repoman.py

    r7911 r7918  
    88gi.require_version('PangoCairo', '1.0')
    99import json
    10 #from edupals.ui.n4dgtklogin import *
    11 import repomanager.RepoManager as RepoManager
     10from edupals.ui.n4dgtklogin import *
     11#import repomanager.RepoManager as RepoManager
     12import xmlrpc.client as n4d
    1213import threading
    1314import time
    1415import subprocess
     16from collections import OrderedDict
    1517
    1618import gettext
     
    2224JSON_SRC_DIR='/usr/share/repoman/sources.d'
    2325APT_SRC_DIR='/etc/apt/sources.list.d'
     26LOGIN_IMG=RSRC_DIR+'/repoman_login.png'
     27LOGIN_BACKGROUND=RSRC_DIR+'/repoman_background.png'
    2428
    2529SPACING=6
     
    3034        def __init__(self):
    3135                self.dbg=True
     36                self.default_editor=''
    3237                self.err_msg={1:_("Invalid Url"),
    3338                                                2:_("Can't add repository information.\nCheck your permissions"),
     
    3540                                                4:_("Repository not found at given Url"),
    3641                                                5:_("Repositories failed to update"),
    37                                                 6:_("Mirror not availabe")
     42                                                6:_("Mirror not availabe"),
     43                                                7:("This repository could'nt be overwrited")
    3844                                                }
    3945                self.result={}         
    4046                self._set_css_info()
    4147                self.stack_dir=Gtk.StackTransitionType.SLIDE_LEFT
    42                 self.sources=RepoManager.manager()
     48                self.n4d=None
     49                self.credentials=[]
     50                self.server=None
    4351                self.repos={}
    4452                self._render_gui()
     
    5563                self.mw.connect("destroy",self._on_destroy)
    5664                self.mw.set_resizable(False)
     65                self.overlay=Gtk.Stack()
     66                self.mw.add(self.overlay)
    5767                vbox=Gtk.VBox(False,True)
    58                 self.mw.add(vbox)
     68                self.overlay.set_name("WHITE_BACKGROUND")
     69                self.overlay.add_titled(vbox,"vbox","vbox")
     70                self.overlay.add_titled(self._render_login(),"login","login")
     71                self.overlay.set_visible_child_name("login")
    5972                pb=GdkPixbuf.Pixbuf.new_from_file("%s/repoman.png"%RSRC_DIR)
    6073                img_banner=Gtk.Image.new_from_pixbuf(pb)
     
    90103                self.stack.set_transition_duration(1000)
    91104                self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
    92 #               self.stack.add_titled(self._render_login(), "login", "Login")
    93                 self.stack.add_titled(self._render_sources(), "sources", "Sources")
    94                 self.stack.add_titled(self._render_newrepo(), "newrepo", "Newrepo")
    95                 self.stack.add_titled(self._render_repolist(), "repolist", "Repolist")
    96                 self.stack.set_visible_child_name("sources")
     105#               self.stack.set_visible_child_name("login")
    97106                vbox.add(self.stack)
    98107                self.rev_info=Gtk.Revealer()
     
    124133                self.box_info.attach(btn_info,1,0,1,1)
    125134                self.box_info.attach(spn_info,0,0,2,1)
     135                self.box_info.set_no_show_all(True)
    126136                btn_info.connect("clicked",self._begin_update_repos,spn_info)
    127137                vbox.add(self.box_info)
     
    161171
    162172        def _render_login(self):
    163                 login=N4dGtkLogin()
     173                login=N4dGtkLogin(orientation=Gtk.Orientation.VERTICAL)
     174#               login=N4dGtkLogin()
     175                login.set_mw_proportion_ratio(1,1)
    164176                login.set_allowed_groups(['adm','teachers'])
    165                 desc=_("Welcome to RepoMan.\nFrom here you can invoke RepoMan's mighty powers to manage your repositories.")
     177                login.set_login_banner(image=LOGIN_IMG)
     178                login.set_label_background(255,255,255,0.3)
     179                login.set_mw_background(image=LOGIN_BACKGROUND,cover=True)
     180                desc=_("From here you can invoke RepoMan's mighty powers to manage your repositories.")
    166181                login.set_info_text("<span foreground='black'>RepoMan</span>",_("Repositories Manager"),"<span foreground='black'>"+desc+"</span>\n")
    167 #               self.login.set_info_background(image='taskscheduler',cover=True)
    168 #               login.set_info_background(image=LOGIN_IMG,cover=False)
    169182                login.after_validation_goto(self._signin)
    170183                login.hide_server_entry()
    171 #               login.show_all()
     184                login.show_all()
    172185                return (login)
    173186
    174187        def _signin(self,user=None,pwd=None,server=None,data=None):
    175188#               self.scheduler.set_credentials(user,pwd,server)
    176                 self.stack.set_visible_child_name("sources")
     189#               self.stack.set_visible_child_name("sources")
     190                self.credentials=[user,pwd]
     191                self.server=server
     192                context=ssl._create_unverified_context()
     193                self.n4d=n4d.ServerProxy("https://%s:9779"%server,context=context,allow_none=True)
     194                self.stack.add_titled(self._render_sources(), "sources", "Sources")
     195                self.stack.add_titled(self._render_newrepo(), "newrepo", "Newrepo")
     196                self.stack.add_titled(self._render_repolist(), "repolist", "Repolist")
     197                self.overlay.set_transition_duration(1000)
     198                self.overlay.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
     199                self.overlay.set_visible_child_name("vbox")
    177200                self.mw.show_all()
    178201        #def _signin
     
    187210                gridbox.set_margin_right(MARGIN)
    188211                gridbox.set_margin_bottom(MARGIN)
    189                 self.repos=self.sources.list_default_repos()
     212                self.repos=self.n4d.list_default_repos(self.credentials,"RepoManager")['data']
     213                        #Sort by relevancy (Lliurex, Local, Ubuntu-*)
     214                sort_repos=OrderedDict()
     215                for repo in sorted(self.repos.keys()):
     216                        sort_repos.update({repo:self.repos[repo]})
     217                self.repos=sort_repos.copy()
    190218                row=0
    191219                for source,sourcedata in self.repos.items():
     
    201229
    202230        def _repo_state_changed(self,*args):
     231                self.stack.set_sensitive(False)
     232                self.box_info.set_no_show_all(False)
    203233                reponame=args[-1]
    204234                state=args[-2]
     
    215245                        self._debug("New state: %s"%repo)
    216246                        self._debug("Saving repo json: %s"%repo)
    217                         if self.sources.write_repo_json(repo):
    218                                 if self.sources.write_repo(repo)!=True:
     247                        if self.n4d.write_repo_json(self.credentials,"RepoManager",repo)['status']:
     248                                if self.n4d.write_repo(self.credentials,"RepoManager",repo)['status']!=True:
    219249                                        err=3
    220250                        else:
    221251                                err=2
    222252                if err:
    223                         self.stack.set_sensitive(False)
    224253                        self.toolbar.set_sensitive(False)
    225254                        GLib.timeout_add(3000,self.show_info,(self.err_msg[err]),"ERROR_LABEL")
     
    227256                        return True
    228257                else:
     258                        self.stack.set_sensitive(True)
    229259                        self.box_info.show_all()
    230260        #def _repo_state_changed
     
    242272                self.repobox.set_row_spacing(0)
    243273                self.repobox.set_name("WHITE_BACKGROUND")
    244                 sourcefiles=self.sources.list_sources()
     274                sourcefiles=self.n4d.list_sources(self.credentials,"RepoManager")['data']
     275                sort_repos=OrderedDict()
     276                for repo in sorted(sourcefiles.keys()):
     277                        sort_repos.update({repo:sourcefiles[repo]})
     278                sourcefiles=sort_repos.copy()
    245279                self.repos.update(sourcefiles)
    246280                row=0
     
    320354                url=args[-1].get_text()
    321355                sw_err=False
    322                 name=args[-3].get_text()
    323                 desc=args[-2].get_text()
    324                 url=args[-1].get_text()
    325356                if not name:
    326357                        args[-3].set_placeholder_text(_("Name is mandatory"))
     
    346377                        sw_err=True
    347378                if not sw_err:
    348                         if os.path.isfile('%s/%s.json'%(JSON_SRC_DIR,name.replace(' ','_'))):
     379                        listfiles=os.listdir(JSON_SRC_DIR)
     380                        lowfiles=[]
     381                        for jsonfile in listfiles:
     382                                lowfile=jsonfile.lower()
     383                                lowfiles.append(lowfile)
     384                        if name.replace(' ','_').lower()+'.json' in lowfiles:
     385                                #see if the repo is protected
     386                                for repo in self.repos.keys():
     387                                        if name.lower().replace('_',' ')==repo.lower():
     388                                                if 'protected' in self.repos[repo]:
     389                                                        if self.repos[repo]['protected'].lower()=='true':
     390                                                                self.stack.set_sensitive(False)
     391                                                                self.toolbar.set_sensitive(False)
     392                                                                err=7
     393                                                                GLib.timeout_add(3000,self.show_info,(self.err_msg[err]),"ERROR_LABEL")
     394                                                                return
     395
    349396                                self.result.pop('response',None)
    350397                                try:
     
    364411                self.stack.set_sensitive(False)
    365412                self.toolbar.set_sensitive(False)
    366                 err=self.sources.add_repo(name,desc,url)
     413                listfiles=os.listdir(JSON_SRC_DIR)
     414                lowfiles={}
     415                for jsonfile in listfiles:
     416                        lowfile=jsonfile.lower()
     417                        lowfiles[lowfile]=jsonfile
     418                lowname=name.replace(' ','_').lower()+'.json'
     419                if lowname in lowfiles.keys():
     420                        name=lowfiles[lowname].replace('.json','').replace('_',' ')
     421                err=self.n4d.add_repo(self.credentials,"RepoManager",name,desc,url)['status']
    367422                if err==0:
    368423                        row=(len(self.repos.keys())*2)
    369                         sourcefiles=self.sources.list_sources()
     424                        if name in self.repos.keys():
     425                                row=-1
     426                        sourcefiles=self.n4d.list_sources(self.credentials,"RepoManager")['data']
    370427                        self.repos.update(sourcefiles)
    371                         self._insert_sourceslist_item(self.repobox,name,desc,url,'true',"false",row,True)
     428                        if row>=0:
     429                                self._insert_sourceslist_item(self.repobox,name,desc,url,'true',row,True)
    372430                        GLib.timeout_add(2000,self.show_info,(_("Added repository %s"%name)),"NOTIF_LABEL",True)
    373431                else:
     
    444502
    445503        def _update_repos(self,spinner):
    446                 self.result['update']=self.sources.update_repos()
     504                self.result['update']=self.n4d.update_repos(self.credentials,"RepoManager")['status']
    447505        #def _update_repos
    448506
     
    466524                        edit=True
    467525                        try:
    468                                 subprocess.run(["pluma","%s/%s.list"%(APT_SRC_DIR,sfile)],check=True)
    469                         except:
     526                                if self.default_editor=='':
     527                                        self.default_editor=subprocess.check_output(["xdg-mime","query","default","text/plain"],universal_newlines=True).strip().rstrip('.desktop;')
     528                                if 'DISPLAY' in os.environ.keys():
     529                                        display=os.environ['DISPLAY']
     530                                        subprocess.run(["pkexec","%s"%self.default_editor,"%s/%s.list"%(APT_SRC_DIR,sfile),"--display=%s"%display],check=True)
     531                        except Exception as e:
     532                                self._debug("_edit_source_file error: %s"%e)
    470533                                edit=False
    471534                        if edit:
     
    479542                                if sorted(self.repos[args[-1]]['repos'])!=sorted(newrepos):
    480543                                        self.repos[args[-1]]['repos']=newrepos
    481                                         self.sources.write_repo_json({args[-1]:self.repos[args[-1]]})
     544                                        self.n4d.write_repo_json(self.credentials,"RepoManager",{args[-1]:self.repos[args[-1]]})
    482545                                        self.box_info.show_all()
     546                else:
     547                        self._debug("File %s/%s not found"%(APT_SRC_DIR,sfile))
    483548        #def _edit_source_file
    484549
     
    589654
    590655                #WHITE_BACKGROUND {
    591                         background:white;
     656                        background-color:rgba(255,255,255,1);
    592657               
    593658                }
Note: See TracChangeset for help on using the changeset viewer.