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

WIP on CLI

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

Legend:

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

    r3646 r3653  
    1313                #self.pluginInfo=['install','deb','remove','deb','pkginfo','deb','remove','zmd']
    1414                self.pluginInfo={'install':'deb','remove':'deb','pkginfo':'deb'}
     15                self.result={}
     16                self.result['data']={}
     17                self.result['status']={}
    1518                self.count=0
    1619        #def __init__
     
    3841                self.installer=packagekit.Client()
    3942                self.count=len(applist)
     43                self._set_status(-1)
    4044                #1.- If the app doesn't exist cancel the action
    4145                for appInfo in applist:
     
    5155                                if action=='pkginfo':
    5256                                        self._get_App_Dependencies(appInfo,app)
    53                         self.progress=self.progress+(self.partialProgress/self.count)
    54                         self._debug("Progress: "+str(self.progress))
     57#                       self.progress=self.progress+(self.partialProgress/self.count)
     58                        self._debug("Final Progress: "+str(self.progress))
    5559                self.progress=100
    5660                return(self.result)
    5761        #def execute_action
    5862
     63        def _set_status(self,status,msg=''):
     64                self.result['status']={'status':status,'msg':msg}
     65
    5966        def _callback(self,status,typ,data=None):
     67                print("PRO "+str(self.progress))
    6068                self.partialProgress=status.get_property('percentage')
    61                 self.progress=self.partialProgress/self.count
    62 #               self._debug("Progress"+str(self.partialProgress))
     69                self.partialProgress=self.partialProgress/self.count
     70                self.progress=(self.progress+self.partialProgress)/self.count
     71                self._debug("Partial Progress"+str(self.partialProgress))
     72                self._debug("Total Progress"+str(self.progress))
     73                self._debug("Total apps"+str(self.count))
    6374        #def _callback
    6475
     
    6879                try:
    6980                        self.installer.install_packages(True,[app.get_id(),],None,self._callback,None)
    70                         self.result.append({app.get_id():0})
     81                        self.result['data'].update({app.get_id():u'installed'})
    7182                except Exception as e:
    7283                        self._debug("Install error: "+str(e.code))
    73                         self.result.append({app.get_id():e.code})
    74                 self.partialProgress=100
     84                        self._set_status(e.code)
     85                finally:
     86                        self.partialProgress=100
    7587        #def _install_App_from_Repo
    7688                       
     
    7890                try:
    7991                        self.installer.remove_packages(True,[app.get_id(),],True,False,None,self._callback,None)
    80                         self.result.append({app.get_id():0})
     92                        self.result['data'].update({app.get_id():0})
    8193                except Exception as e:
    8294                        self._debug("Remove error: " +str(e.code))
    83                         self.result.append({app.get_id():e.code})
    84                 self.partialProgress=100
     95                        self._set_status(e.code)
     96                finally:
     97                        self.partialProgress=100
    8598        #def _remove_App
    8699
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/infoManager.py

    r3646 r3653  
    113113                                appInfo['homepage']=app.get_url_item(1).strip()
    114114                        if app.get_state()==1: #1=Installed
    115                                 appInfo['status']='installed'
     115                                appInfo['state']='installed'
    116116                        else:
    117                                 appInfo['status']='available'
     117                                appInfo['state']='available'
    118118                        if app.get_kudos():
    119119                                appInfo['kudos']=app.get_kudos()
     
    149149                'homepage':'',\
    150150                'installerUrl':'',\
    151                 'status':'',\
     151                'state':'',\
    152152                'depends':'',\
    153153                'kudos':'',\
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/searchManager.py

    r3646 r3653  
    1313                self.applist=[]
    1414                self.progress=0
     15                self.result={}
     16                self.result['data']={}
     17                self.result['status']={}
    1518        #def __init__
    1619
     
    4043                        tokens=[tokens]
    4144                self.store=appstreamStore
     45                self.result['status']={'status':-1,'msg':''}
     46                self.result['data']=[]
    4247                if action=='list':
    4348                        self._list_category(tokens)
     
    4752                        self._search_app(tokens)
    4853                self.progress=100
    49                 return(self.applist)
     54                return(self.result)
     55
     56        def _set_status(self,status,msg=''):
     57                self.result['status']={'status':status,'msg':msg}
    5058
    5159        def set_precision(self,precision):
     
    6573                        for app in self._get_apps_by_match(tokens):
    6674                                applist.append(app)
    67                 self.applist=applist
     75                self.result['data']=applist
     76                if len(applist):
     77                        self._set_status(0)
     78                else:
     79                        self._set_status(1)
    6880                return(applist)
    6981
     
    7991                for section in catDict:
    8092                        applist.append({str(section):catDict[section]})
    81                 self.applist=applist
     93                self.result['data']=applist
     94                if len(applist):
     95                        self._set_status(0)
     96                else:
     97                        self._set_status(1)
    8298                return(applist)
    8399
     
    108124#                       for app in applist:
    109125#                               self._debug("Added "+app.get_id())
    110                 self.applist=applist
     126                self.result['data']=applist
     127                if len(applist):
     128                        self._set_status(0)
     129                else:
     130                        self._set_status(1)
    111131                return(applist)
    112132
     
    117137                app=self.store.get_app_by_id(appName)
    118138                if not app:
    119                 #2.- Try with exact match with oorg.lliurex
     139                #2.- Try exact match with org.lliurex
    120140                        app=self.store.get_app_by_id("org.lliurex."+appName)
    121141                        if not app:
    122                 #2.- Try with exact match with .desktop
     142                #2.- Try exact match with .desktop
    123143                                app=self.store.get_app_by_id(appName+".desktop")
    124144                return(app)
  • 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.