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

Last change on this file since 3060 was 3060, checked in by Juanma, 3 years ago

Initial release

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