Ignore:
Timestamp:
Apr 20, 2017, 1:48:50 PM (4 years ago)
Author:
Juanma
Message:

Refactorized search method and related plugins

Location:
lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/infoManager.py

    r3869 r4363  
    55                self.dbg=0
    66                self.pluginInfo={'get_info':'*'}
    7                 self.applistInfo=[]
     7                self.result={}
     8                self.result['status']={'status':-1,'msg':''}
     9                self.result['data']=[]
    810                self.progress=0
    911                self.inc=0
     
    3032                if action=='get_info' and count>0:
    3133                        inc=100.0/count
    32                         self._get_info(applist)
     34                        self.result['data']=self._get_info(applist)
    3335                self.progress=100
    34                 return(self.applistInfo)
     36                return(self.result)
    3537        #def execute_action
     38       
     39        def _set_status(self,status,msg=''):
     40                self.result['status']={'status':status,'msg':msg}
    3641
    3742        def _callback_progress(self):
     
    139144                        applistInfo.append(appInfo)
    140145                        self._callback_progress()
    141                 self.applistInfo=applistInfo
     146                self._set_status(0)
    142147                return(applistInfo)
    143148        #def _get_info
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/zmdManager.py

    r4348 r4363  
    1515        def __init__(self):
    1616                self.locale=locale.getlocale()[0]
    17                 self.dbg=1
     17                self.dbg=0
    1818                self.zmdPath='/usr/share/zero-center/zmds'
    19                 if hasattr(sys,'last_value'):
     19                self.disabled=False
     20                if hasattr(sys,'last_value') or not (os.path.exists(self.zmdPath)):
    2021                        #If there's an error at this point it only could be an importError caused by xmlrpc
    21                         self.pluginInfo={}
    22                 else:
    23                         self.pluginInfo={'install':'zmd','pkginfo':'zmd','remove':'zmd'}
     22                        self.disabled=True
     23                self.pluginInfo={'install':'zmd','pkginfo':'zmd','remove':'zmd'}
    2424                self.progress=0
    2525                self.n4dclient=''
     
    2727                self.result['data']=[]
    2828                self.result['status']={}
     29                self.result['status']={'status':-1,'msg':''}
    2930        #def __init__
    3031
     
    4445
    4546        def execute_action(self,action,applist):
    46                 count=len(applist)
    47                 self.n4dclient=self._n4d_connect()
    4847                self.result['status']={'status':-1,'msg':''}
    49                 self.result['data']=[]
    50                 for appInfo in applist:
    51                         if not (os.path.exists(self.zmdPath)):
    52                                 return applist;
    53                 if (action):
    54                                 if action=='install':
    55                                         self.result['data'].append(self._install_Zmd(appInfo))
    56                                 if action=='remove':
    57                                         self.result['data'].append(self._remove_Zmd(appInfo))
    58                                 if action=='pkginfo':
    59                                         self.result['data'].append(self._get_Zmd_Info(appInfo))
     48                self.result['data']=applist
     49                if self.disabled:
     50                        self._set_status(9)
     51                else:
     52                        count=len(applist)
     53                        try:
     54                                self.n4dclient=self._n4d_connect()
     55                                for appInfo in applist:
     56                                        if (action):
     57                                                if action=='install':
     58                                                        self.result['data'].append(self._install_Zmd(appInfo))
     59                                                if action=='remove':
     60                                                        self.result['data'].append(self._remove_Zmd(appInfo))
     61                                                if action=='pkginfo':
     62                                                        self.result['data'].append(self._get_Zmd_Info(appInfo))
     63                        except:
     64                                self.disabled=True
     65                                self._set_status(10)
    6066                self.progress=100
    6167                return(self.result)
     
    7985                zmd=self.zmdPath+'/'+appInfo['package']+'.zmd'
    8086                self._debug("Installing "+str(zmd))
    81                 err=0
    82                 try:
    83                         zmdsudo=['gksudo',zmd]
    84                         self._debug("executing "+str(zmdsudo))
    85                         zmdCmd=subprocess.Popen(zmdsudo,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
    86                         zmdLauncher=os.path.basename(zmd)
    87                         zmdLauncher=os.path.splitext(zmdLauncher)[0]
    88                         while zmdCmd.poll() is None:
    89                                 self._callback(zmdLauncher)
    90                                 time.sleep(0.4)
    91                         zmdResult=zmdCmdtdout.read()
    92                         zmdError=zmdCmd.stderr.read()
    93                         self._debug("Error: "+str(zmdError))
    94                         self._debug("Result: "+str(zmdResult))
    95                         appInfo=self._get_Zmd_Info(appInfo)
    96                         if appInfo['status']!='Installed':
    97                                 err=5
    98                 except Exception as e:
    99                         appInfo=self._get_Zmd_Info(appInfo)
    100                         self._debug(str(e))
    101                         if appInfo['status']!='Installed':
    102                                 err=5
     87                if os.path.exists(zmd):
     88                        err=0
     89                        try:
     90                                zmdsudo=['gksudo',zmd]
     91                                self._debug("executing "+str(zmdsudo))
     92                                zmdCmd=subprocess.Popen(zmdsudo,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
     93                                zmdLauncher=os.path.basename(zmd)
     94                                zmdLauncher=os.path.splitext(zmdLauncher)[0]
     95                                while zmdCmd.poll() is None:
     96                                        self._callback(zmdLauncher)
     97                                        time.sleep(0.4)
     98                                zmdResult=zmdCmdtdout.read()
     99                                zmdError=zmdCmd.stderr.read()
     100                                self._debug("Error: "+str(zmdError))
     101                                self._debug("Result: "+str(zmdResult))
     102                                appInfo=self._get_Zmd_Info(appInfo)
     103                                if appInfo['status']!='Installed':
     104                                        err=5
     105                        except Exception as e:
     106                                appInfo=self._get_Zmd_Info(appInfo)
     107                                self._debug(str(e))
     108                                if appInfo['status']!='Installed':
     109                                        err=5
     110                else:
     111                        err=8
    103112                self._set_status(err)
    104113                return err
     
    172181                zmd=appInfo['package']
    173182                appInfo['status']='Available'
    174                 for key in n4dvars:
    175                         if zmd.lower() in key.lower():
    176                                 if n4dvars[key]['state']==1:
    177                                         appInfo['status']='Installed'
     183                if n4dvars:
     184                        for key in n4dvars:
     185                                if zmd.lower() in key.lower():
     186                                        if n4dvars[key]['state']==1:
     187                                                appInfo['status']='Installed'
    178188
    179189                self._set_status(6)
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/storeManager.py

    r4108 r4363  
    9696                        syslog.openlog('lliurex-store')
    9797                        syslog.syslog(msg)
     98                        self._debug(msg)
    9899        ####
    99100        #dict of actions/related functions for threading
     
    294295                        for res in self.result.keys():
    295296                                if res!='load':
    296                                         result[res]=self.result[res]['data']
     297                                        if 'data' in self.result[res]:
     298                                                result[res]=self.result[res]['data']
     299                                        else:
     300                                                result[res]=[]
    297301                else:
    298302                        self._debug("Checking result for action "+action)
     
    301305                        result[action]=None
    302306                        if action in self.result:
    303                                 result[action]=self.result[action]['data']
     307                                if 'data' in self.result[action]:
     308                                        result[action]=self.result[action]['data']
     309                                else:
     310                                        result[action]=[]
    304311                self.lock.release()
    305312                return(result)
     
    315322        def get_status(self,action=None):
    316323                self.lock.acquire()
    317 
     324                self._debug("Checking status for action "+str(action))
    318325                result={}
    319326                if action in self.result:
     
    364371                action='pkginfo'
    365372                typeDict={}
    366                 result=[]
     373                result={}
     374                result['data']=[]
     375                result['status']={'status':0,'msg':''}
    367376                for appInfo in applistInfo:
    368377                        package_type=self._check_package_type(appInfo)
     
    374383                        self._debug("Checking plugin for "+action+ " "+package_type)
    375384                        if package_type in self.registeredPlugins[action]:
    376                                 #Only search deb's full info if it's required
    377                                 if (package_type=='deb' and fullsearch==False):
    378                                         result=result+typeDict[package_type]
     385                                #Only search full info if it's required
     386                                if (fullsearch==False):
     387                                        result['data'].extend(typeDict[package_type])
    379388                                        continue
    380389                                self._debug("Retrieving info for "+str(typeDict[package_type]))
    381390                                pkgInfoFunction=self._execute_class_method(action,package_type,launchedby)
    382                                 result=result+pkgInfoFunction.execute_action(action,typeDict[package_type])['data']
     391                                result.update(pkgInfoFunction.execute_action(action,typeDict[package_type]))
    383392                return(result)
    384393        #def _get_Extended_App_Info
     
    430439                                exact_match=False
    431440                searchFunction=self._execute_class_method(action,'*',launchedby)
    432                 aux_result=searchFunction.execute_action(self.store,action,searchItem,exact_match)
    433                 aux_applist=aux_result['data']
    434                 status=aux_result['status']
     441                result=searchFunction.execute_action(self.store,action,searchItem,exact_match)
     442                aux_applist=result['data']
     443                status=result['status']
    435444                realAction=action
    436445                if status['status']==0:
     
    438447                        partialAction='get_info'
    439448                        self.result[partialAction]={}
    440                         applist=self._get_App_Info(aux_applist,launchedby)
     449                        result=self._get_App_Info(aux_applist,launchedby)
    441450                        self._debug("Add result for "+partialAction)
    442                         self.result[partialAction]['data']=applist
     451                        self.result[partialAction]=result
    443452                        #2.- Get rest of metadata (slower)
    444453                        partialAction='pkginfo'
    445                         applist=self._get_Extended_App_Info(applist,launchedby,fullsearch)
     454                        result=self._get_Extended_App_Info(result['data'],launchedby,fullsearch)
    446455                        if launchedby:
    447456                                realAction=launchedby
    448457                                self._debug("Assigned results of "+action+" to "+realAction)
    449                         if (len(applist)):
     458                        if (result['status']['status']==0) or (result['status']['status']==9):
    450459                                return_msg=True
     460                                if fullsearch:
     461                                        result['status']['status']=0
    451462                        else:
    452463                                return_msg=False
    453464                else:
    454465                        return_msg=False
    455                 self.result[launchedby]['data']=applist
    456                 self.result[launchedby]['status']=status
     466                self.result[launchedby]['data']=result['data']
     467                self.result[launchedby]['status']=result['status']
    457468                return(return_msg)
    458469        #def _search_Store
     
    466477        ####
    467478        def _install_remove_App(self,appName,action='install',launchedby=None):
    468                 self._debug("Attempting to "+action +" "+appName)
    469479                self._log("Attempting to "+action +" "+appName)
    470480                result={}
Note: See TracChangeset for help on using the changeset viewer.