source: lliurex-store/trunk/fuentes/lliurex-store-gui/LliurexStoreManager.py @ 4109

Last change on this file since 4109 was 4109, checked in by hectorgh, 2 years ago

wip

File size: 3.8 KB
Line 
1import lliurexstore.storeManager
2import time
3import Package
4import Core
5import random
6import copy
7
8class LliurexStoreManager:
9
10        def __init__(self):
11               
12                self.store=lliurexstore.storeManager.StoreManager(0)
13               
14                self.core=Core.Core.get_core()
15               
16                #http://appstream.ubuntu.com/data/xenial/universe/
17               
18       
19        #def init
20       
21        def list_sections(self):
22                action="list_sections"
23                self.store.execute_action(action,True)
24               
25                while self.store.is_action_running():
26                        time.sleep(0.2)
27               
28                print(self.store.get_status(action))
29                print(self.store.get_result(action))
30               
31                print("DONE")
32               
33               
34               
35        #def search
36       
37        def search_package(self,search_text):
38               
39                action="search"
40                self.store.execute_action(action,search_text)
41               
42                packages=[]
43               
44                while self.store.is_action_running("search"):
45                        time.sleep(0.2)
46                       
47                ret=self.store.get_status(action)
48               
49                if ret["status"]==0:
50                        data=self.store.get_result(action)
51                        for item in data["search"]:
52                               
53                                p=Package.Package(item)
54                                packages.append(p)
55               
56                return packages
57               
58        #def search_package
59       
60        def get_info(self,pkg_id):
61               
62                action="info"
63               
64                self.store.execute_action(action,pkg_id)
65                while self.store.is_action_running(action):
66                        time.sleep(0.2)
67                ret=self.store.get_status(action)
68               
69                print(ret)
70               
71                if ret["status"]==0:
72                       
73                        data=self.store.get_result(action)
74                        p=Package.Package(data["info"][0])
75                       
76                        categories=copy.deepcopy(p["categories"])
77                        banned=set()
78                       
79                        for item in self.core.categories_manager.categories:
80                                if item in categories and len(categories) > 1:
81                                        categories.remove(item)
82               
83                        for item in self.core.categories_manager.banned_categories:
84                                if item in categories and len(categories) > 1:
85                                        categories.remove(item)                 
86               
87
88                        random_id=int(random.random()*len(categories))
89                        random_category=categories[random_id]
90                        pkgs,categories=self.get_package_list_from_category(random_category)
91                       
92                        if len(pkgs) >=10:
93                                samples=10
94                        else:
95                                samples=len(pkgs)
96                       
97                        for item in random.sample(pkgs,samples):
98                                if item["package"]!=pkg_id:
99                                        p["related_packages"].append(item)
100                               
101                        p.fix_info()
102                       
103                        return p
104               
105        #def get_info
106       
107        def get_package_list_from_category(self,category_tag=None):
108               
109                action="list"
110                self.store.execute_action(action,[category_tag])
111               
112                while self.store.is_action_running():
113                        time.sleep(0.2)
114               
115                packages=[]
116                categories=set()
117                banned=set()
118               
119                if category_tag in self.core.categories_manager.categories:
120                        for item in self.core.categories_manager.categories[category_tag]["sections"]:
121                                categories.add(item)
122               
123                for item in self.core.categories_manager.banned_categories:
124                        banned.add(item)
125                       
126               
127                ret=self.store.get_status(action)
128                if ret["status"]==0:
129                        for item in self.store.get_result(action)["list"]:
130                                p=Package.Package(item)
131                               
132                                for category in p["categories"]:
133                                        if type(category)!=str:
134                                                continue
135                                        if category not in banned and not category.startswith("X-") and category in categories:
136                                                categories.add(category)
137                               
138                                packages.append(p)
139               
140                return(packages,categories)
141               
142        #def get_package_list
143
144        def get_installed_list(self):
145               
146                pkgs,categories=self.get_package_list_from_category()
147               
148                ret=[]
149               
150                for pkg in pkgs:
151                       
152                        if pkg["state"]=="installed":
153                                p=Package.Package(pkg)
154                                ret.append(p)
155                               
156                return ret
157                               
158               
159        #def get_installed_list
160
161       
162        def install_package(self,pkg_id):
163               
164                action="install"
165                self.store.execute_action(action,pkg_id)
166               
167                while self.store.is_action_running():
168                        time.sleep(0.2)
169                       
170                ret=self.store.get_status(action)       
171                print(ret)
172               
173                if ret["status"]==0:
174                        return True
175               
176        #def install_package
177       
178        def uninstall_package(self,pkg_id):
179               
180                action="remove"
181                self.store.execute_action(action,pkg_id)
182               
183                while self.store.is_action_running():
184                        time.sleep(0.2)
185                       
186                ret=self.store.get_status(action)       
187                print(ret)
188               
189                if ret["status"]==0:
190                        return True
191               
192        #def install_package
193       
194       
195       
196
197
198#class StoreManager
Note: See TracBrowser for help on using the repository browser.