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

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

wip

File size: 3.9 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               
70                if ret["status"]==0:
71                       
72                        data=self.store.get_result(action)
73                        p=Package.Package(data["info"][0])
74                       
75                        categories=copy.deepcopy(p["categories"])
76                        banned=set()
77                       
78                        for item in self.core.categories_manager.categories:
79                                if item in categories and len(categories) > 1:
80                                        categories.remove(item)
81               
82                        for item in self.core.categories_manager.banned_categories:
83                                if item in categories and len(categories) > 1:
84                                        categories.remove(item)                 
85               
86               
87                        if len(categories)>0:
88
89                                random_id=int(random.random()*len(categories))
90                               
91                                random_category=categories[random_id]
92                                pkgs,categories=self.get_package_list_from_category(random_category)
93                               
94                                if len(pkgs) >=10:
95                                        samples=10
96                                else:
97                                        samples=len(pkgs)
98                               
99                                for item in random.sample(pkgs,samples):
100                                        if item["package"]!=pkg_id:
101                                                p["related_packages"].append(item)
102                                       
103                                p.fix_info()
104                       
105                        return p
106               
107        #def get_info
108       
109        def get_package_list_from_category(self,category_tag=None):
110               
111                action="list"
112                self.store.execute_action(action,[category_tag])
113               
114                while self.store.is_action_running():
115                        time.sleep(0.2)
116               
117                packages=[]
118                categories=set()
119                banned=set()
120               
121                if category_tag in self.core.categories_manager.categories:
122                        for item in self.core.categories_manager.categories[category_tag]["sections"]:
123                                categories.add(item)
124               
125                for item in self.core.categories_manager.banned_categories:
126                        banned.add(item)
127                       
128               
129                ret=self.store.get_status(action)
130                if ret["status"]==0:
131                        for item in self.store.get_result(action)["list"]:
132                                p=Package.Package(item)
133                               
134                                for category in p["categories"]:
135                                        if type(category)!=str:
136                                                continue
137                                        if category not in banned and not category.startswith("X-") and category in categories:
138                                                categories.add(category)
139                               
140                                packages.append(p)
141               
142                return(packages,categories)
143               
144        #def get_package_list
145
146        def get_installed_list(self):
147               
148                pkgs,categories=self.get_package_list_from_category()
149               
150                ret=[]
151               
152                for pkg in pkgs:
153                       
154                        if pkg["state"]=="installed":
155                                p=Package.Package(pkg)
156                                ret.append(p)
157                               
158                return ret
159                               
160               
161        #def get_installed_list
162
163       
164        def install_package(self,pkg_id):
165               
166                action="install"
167                self.store.execute_action(action,pkg_id)
168               
169                while self.store.is_action_running():
170                        time.sleep(0.2)
171                       
172                ret=self.store.get_status(action)       
173                print(ret)
174               
175                if ret["status"]==0:
176                        return True
177               
178        #def install_package
179       
180        def uninstall_package(self,pkg_id):
181               
182                action="remove"
183                self.store.execute_action(action,pkg_id)
184               
185                while self.store.is_action_running():
186                        time.sleep(0.2)
187                       
188                ret=self.store.get_status(action)       
189                print(ret)
190               
191                if ret["status"]==0:
192                        return True
193               
194        #def install_package
195       
196       
197       
198
199
200#class StoreManager
Note: See TracBrowser for help on using the repository browser.