Ignore:
Timestamp:
Feb 16, 2017, 2:59:33 PM (3 years ago)
Author:
Juanma
Message:

WIP on CLI

File:
1 edited

Legend:

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

    r3646 r3653  
    129129                                self.threadsRunning[action]=eval(self.threads[action])
    130130                                self.threadsRunning[action].start()
     131                                self.result[action]={}
     132                                self.result[action]['status']={'status':-1,'msg':''}
    131133                                self._debug("Thread "+str(self.threadsRunning[action])+" for action "+action+" launched")
     134
    132135                        except Exception as e:
    133136                                self._debug("Can't launch thread for action: "+action)
     
    258261       
    259262                                                count=len(self.relatedActions[parentAction])
    260                                                 acumprogress=round(acumProgress/count,0)
    261263#                                               self._debug("Assign result for action" +action)
    262264                                                self.progressActions[parentAction]=round(acumProgress/count,0)
    263                                                 progress[parentAction]=round(acumProgress/count,0)
     265                                                progress[parentAction]=self.progressActions[parentAction]
    264266                        else:
    265267                                #put a 100% just in case
     
    284286                result={}
    285287                if action==None:
    286                         result=self.result
     288                        for res in self.result.keys():
     289                                if res!='load':
     290                                        result[res]=self.result[res]['data']
    287291                else:
    288292                        if self.is_action_running(action):
     
    290294                        result[action]=None
    291295                        if action in self.result:
    292                                 result[action]=self.result[action]
     296                                result[action]=self.result[action]['data']
    293297                self.lock.release()
    294298                return(result)
    295299        #def get_result
     300
     301        ####
     302        #Gets the status of an action
     303        #Input.
     304        # - action
     305        #Output:
     306        # - Status dict of the action
     307        ####
     308        def get_status(self,action=None):
     309                self.lock.acquire()
     310                result={}
     311                if action in self.result:
     312                        result=self.result[action]['status']
     313                self.lock.release()
     314                return(result)
     315        #def get_status
    296316
    297317        ####
     
    338358                        self._debug("Checking plugin for "+action+ " "+package_type)
    339359                        if package_type in self.registeredPlugins[action]:
    340                                 #Only search deb's full info if there's only one package
    341                                 if package_type=='deb' and (len(typeDict[package_type])!=1 or fullsearch==False):
     360                                #Only search deb's full info if it's required
     361                                if (package_type=='deb' and fullsearch==False):
    342362                                        continue
    343363                                pkgInfoFunction=self._execute_class_method(action,package_type,launchedby)
     
    349369                result={}
    350370                self._debug("Retrieving all sections")
     371                data={}
     372                status={}
    351373                if action in self.registeredPlugins.keys():
    352374                        self._debug("Plugin for generic search: "+self.registeredPlugins[action]['*'])
     
    354376                        searchFunction=eval(finder+"()")
    355377                        result=searchFunction.execute_action(self.store,action,searchItem)
     378                        status=result['status']
     379                        data=result['data']
    356380                else:
    357381                        print("No plugin for action "+action)
    358                 self.result[action]=result
    359                 self._debug("Sections: "+str(self.result[action]))
     382                self.result[action]['data']=data
     383                self.result[action]['status']=status
     384                self._debug("Sections: "+str(self.result[action]['data']))
     385                self._debug("Status: "+str(self.result[action]['status']))
    360386
    361387        ####
     
    380406
    381407                searchFunction=self._execute_class_method(action,'*',launchedby)
    382                 aux_applist=searchFunction.execute_action(self.store,action,searchItem)
    383                 if len(aux_applist):
     408                aux_result=searchFunction.execute_action(self.store,action,searchItem)
     409                aux_applist=aux_result['data']
     410                status=aux_result['status']
     411                realAction=action
     412                if status['status']==0:
    384413                        #1.- Get appstream metadata (faster)
    385414                        partialAction='info'
     415                        self.result[partialAction]={}
    386416                        applist=self._get_App_Info(aux_applist,launchedby)
    387417                        self._debug("Add result for "+partialAction)
    388                         self.result[partialAction]=applist
     418                        self.result[partialAction]['data']=applist
    389419                        #2.- Get rest of metadata (slower)
    390420                        partialAction='pkginfo'
    391421                        applist=self._get_Extended_App_Info(applist,launchedby,fullsearch)
    392                         realAction=action
    393422                        if launchedby:
    394423                                realAction=launchedby
    395424                                self._debug("Assigned results of "+action+" to "+realAction)
    396425                        if (len(applist)):
    397                                 self.result[realAction]=applist
    398426                                return_msg=True
    399427                        else:
    400                                 notfound=''
    401                                 self.result[realAction]=[{searchItem:2}]
    402428                                return_msg=False
    403429                else:
    404                         self.result[launchedby]=[{searchItem:1}]
    405430                        return_msg=False
     431                self.result[launchedby]['data']=applist
     432                self.result[launchedby]['status']=status
    406433                return(return_msg)
    407434        #def _search_Store
     
    420447                return_msg=False
    421448                if (self._search_Store(appName,'search',False,action)):
    422                         applistInfo=self.result[action]
     449                        applistInfo=self.result[action]['data']
    423450                        typeDict={}
    424451                        #Check if package is installed if we want to remove it or vice versa
    425452                        for appInfo in applistInfo:
    426                                 if (action=='install' and appInfo['status']=='installed') or (action=='remove' and appInfo['status']=='available'):
     453                                if (action=='install' and appInfo['state']=='installed') or (action=='remove' and appInfo['state']=='available'):
    427454                                        if action=='remove':
    428                                                 self.result[action]=[{appInfo['package']:3}]
     455#                                               self.result[action]['status']={appInfo['package']:3}
     456                                                self.result[action]['status']={'status':3}
    429457                                        else:
    430                                                 self.result[action]=[{appInfo['package']:4}]
     458#                                               self.result[action]['status']={appInfo['package']:4}
     459                                                self.result[action]['status']={'status':4}
    431460                                        return_msg=False
    432461                                        typeDict={}
Note: See TracChangeset for help on using the changeset viewer.