source: lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/debManager.py @ 3105

Last change on this file since 3105 was 3105, checked in by Juanma, 4 years ago

wip on syslog

File size: 4.0 KB
Line 
1import syslog
2import gi
3gi.require_version('PackageKitGlib', '1.0')
4from gi.repository import PackageKitGlib as packagekit
5class debmanager:
6        def __init__(self):
7                self.installer=''
8                self.dbg=0
9                self.pkgList=[]
10                self.result=[]
11                self.progress=0
12                self.partialProgress=0
13                #self.pluginInfo=['install','deb','remove','deb','pkginfo','deb','remove','zmd']
14                self.pluginInfo={'install':'deb','remove':'deb','pkginfo':'deb'}
15                self.count=0
16        #def __init__
17
18        def set_debug(self,dbg='1'):
19                self.dbg=int(dbg)
20                self._debug ("Debug enabled")
21        #def set_debug
22
23        def _debug(self,msg=''):
24                if self.dbg==1:
25                        print ('DEBUG Deb: '+msg)
26        #def debug
27
28        def _log(self,msg=None):
29                if msg:
30                        syslog.openlog('lliurex-store')
31                        syslog.syslog(msg)
32
33        def register(self):
34                return(self.pluginInfo)
35        #def register
36
37        def execute_action(self,action,applist):
38                self.installer=packagekit.Client()
39                self.count=len(applist)
40                #1.- If the app doesn't exist cancel the action
41                for appInfo in applist:
42                        app=self._resolve_App(appInfo['package'])
43                        if app:
44                                if action=='install':
45                                        self._install_App(app)
46                                if action=='remove':
47                                        self._log("Removing "+appInfo['package'])
48                                        self._get_App_Dependencies(appInfo,app)
49                                        self._log("Dependencies to remove"+str(appInfo['depends']))
50                                        self._remove_App(app)
51#                               if action=='pkginfo' and self.count==1:
52                                if action=='pkginfo':
53                                        self._get_App_Dependencies(appInfo,app)
54#                               if action=='pkginfo':
55#                                       self._get_App_Info(appInfo,app,count)
56                        self.progress=self.progress+(self.partialProgress/self.count)
57                        self._debug("Progress: "+str(self.progress))
58                self.progress=100
59                return(self.result)
60
61        def _callback(self,status,typ,data=None):
62                self.partialProgress=status.get_property('percentage')
63                self.progress=self.partialProgress/self.count
64                self._debug("Progress"+str(self.partialProgress))
65
66        def initialize_list(self):
67                self.pkgList=[]
68        #def initialize_list
69
70        def _install_App(self,app):
71                self.return_msg=False
72                self._debug("Installing "+app.get_id())
73                try:
74                        self.installer.install_packages(False,[app.get_id(),],None,self._callback,None)
75                        self.result.append({app.get_id():" installed succesfully"})
76                except Exception as e:
77                        self._debug(e.message)
78                        self.result.append({app.get_id():e.message})
79                self.partialProgress=100
80        #def _install_App_from_Repo
81                       
82        def _remove_App(self,app):
83                try:
84                        self.installer.remove_packages(False,[app.get_id(),],True,False,None,self._callback,None)
85                        self.result.append({app.get_id():" removed succesfully"})
86                except Exception as e:
87                        self._debug(e.message)
88                        self.result.append({app.get_id():e.message})
89                self.partialProgress=100
90        #def _remove_App
91
92        def _get_App_Dependencies(self,appInfo,app):
93                self._debug("Getting dependencies for "+app.get_id())
94                pkTask=packagekit.Task()
95                results=[]
96                dependsList=[]
97                try:
98                        results=pkTask.get_depends(1,[app.get_id(),],True,None,self._callback,None)
99                except:
100                        pass
101                if (results):
102                        for app in results.get_package_array():
103                                dependsList.append(app.get_id())
104                appInfo['depends']=dependsList
105#               return(dependsList)
106                return(appInfo)
107
108        def _get_App_Info(self,appInfo,app,appsCount=0):
109                info=app.get_info()
110                appInfo['status']=info.to_string(info)
111                self._debug("Status: "+appInfo['status'])
112                #Only search dependencies if there's only one package on the package queue
113                if appsCount==1:
114                        self._debug("loading depends")
115                        appInfo['depends']=self._get_App_Dependencies(appInfo,app)
116                self.partialProgress=100
117                self.result.append(appInfo)
118                return(appInfo)
119
120        def _resolve_App(self,appName,filters=False):
121                self._debug("Resolving "+appName)
122                app=None
123                applist=[]
124                self.return_msg=False
125                try:
126                        result=self.installer.resolve(1,[appName,],None,self._callback, None)
127                        applist=result.get_package_array()
128                        if applist:
129                                self._debug("Application "+applist[0].get_name()+" resolved succesfully")
130                                app=applist[0]
131                except Exception as e:
132                        self._debug("Couldn't resolve "+appName)
133                        self._debug("Reason: "+str(e))
134                self.partialProgress=100
135                return(app)
136        #def _resolve_App
137
138       
Note: See TracBrowser for help on using the repository browser.