mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 19:44:15 +02:00
new read_installed and downgrade definitions
This commit is contained in:
@@ -97,10 +97,10 @@ class GenericSoftwareManager(SoftwareManager):
|
|||||||
self.thread_prepare.join()
|
self.thread_prepare.join()
|
||||||
self.thread_prepare = None
|
self.thread_prepare = None
|
||||||
|
|
||||||
def read_installed(self, disk_loader: DiskCacheLoader = None, limit: int = -1, only_apps: bool = False, pkg_types: Set[Type[SoftwarePackage]] = None) -> List[SoftwarePackage]:
|
def read_installed(self, disk_loader: DiskCacheLoader = None, limit: int = -1, only_apps: bool = False, pkg_types: Set[Type[SoftwarePackage]] = None) -> SearchResult:
|
||||||
self._wait_to_be_ready()
|
self._wait_to_be_ready()
|
||||||
|
|
||||||
installed = []
|
res = SearchResult([], None, 0)
|
||||||
|
|
||||||
disk_loader = None
|
disk_loader = None
|
||||||
|
|
||||||
@@ -111,8 +111,9 @@ class GenericSoftwareManager(SoftwareManager):
|
|||||||
disk_loader = self.disk_loader_factory.new()
|
disk_loader = self.disk_loader_factory.new()
|
||||||
disk_loader.start()
|
disk_loader.start()
|
||||||
|
|
||||||
installed.extend(man.read_installed(disk_loader=disk_loader, pkg_types=None))
|
man_res = man.read_installed(disk_loader=disk_loader, pkg_types=None)
|
||||||
|
res.installed.extend(man_res.installed)
|
||||||
|
res.total += man_res.total
|
||||||
else:
|
else:
|
||||||
man_already_used = []
|
man_already_used = []
|
||||||
|
|
||||||
@@ -124,17 +125,17 @@ class GenericSoftwareManager(SoftwareManager):
|
|||||||
disk_loader = self.disk_loader_factory.new()
|
disk_loader = self.disk_loader_factory.new()
|
||||||
disk_loader.start()
|
disk_loader.start()
|
||||||
|
|
||||||
installed.extend(man.read_installed(disk_loader=disk_loader, pkg_types=None))
|
man_res = man.read_installed(disk_loader=disk_loader, pkg_types=None)
|
||||||
|
res.installed.extend(man_res.installed)
|
||||||
|
res.total += man_res.total
|
||||||
|
|
||||||
if disk_loader:
|
if disk_loader:
|
||||||
disk_loader.stop = True
|
disk_loader.stop = True
|
||||||
disk_loader.join()
|
disk_loader.join()
|
||||||
|
|
||||||
installed.sort(key=lambda a: a.base_data.name.lower())
|
return res
|
||||||
|
|
||||||
return installed
|
def downgrade(self, app: SoftwarePackage, root_password: str, handler: ProcessWatcher) -> bool:
|
||||||
|
|
||||||
def downgrade_app(self, app: SoftwarePackage, root_password: str, handler: ProcessWatcher) -> bool:
|
|
||||||
man = self._get_manager_for(app)
|
man = self._get_manager_for(app)
|
||||||
|
|
||||||
if man and app.can_be_downgraded():
|
if man and app.can_be_downgraded():
|
||||||
|
|||||||
@@ -100,12 +100,12 @@ class RefreshApps(AsyncAction):
|
|||||||
self.pkg_types = pkg_types
|
self.pkg_types = pkg_types
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
installed = self.manager.read_installed(pkg_types=self.pkg_types)
|
res = self.manager.read_installed(pkg_types=self.pkg_types)
|
||||||
refreshed_types = set()
|
refreshed_types = set()
|
||||||
|
|
||||||
if installed:
|
if res:
|
||||||
idx_found, app_found = None, None
|
idx_found, app_found = None, None
|
||||||
for idx, ins in enumerate(installed):
|
for idx, ins in enumerate(res.installed):
|
||||||
if self.pkg_types:
|
if self.pkg_types:
|
||||||
refreshed_types.add(ins.__class__)
|
refreshed_types.add(ins.__class__)
|
||||||
|
|
||||||
@@ -115,12 +115,12 @@ class RefreshApps(AsyncAction):
|
|||||||
break
|
break
|
||||||
|
|
||||||
if app_found:
|
if app_found:
|
||||||
del installed[idx_found]
|
del res.installed[idx_found]
|
||||||
installed.insert(0, app_found)
|
res.installed.insert(0, app_found)
|
||||||
elif self.pkg_types:
|
elif self.pkg_types:
|
||||||
refreshed_types = self.pkg_types
|
refreshed_types = self.pkg_types
|
||||||
|
|
||||||
self.notify_finished({'installed': installed, 'types': refreshed_types})
|
self.notify_finished({'installed': res.installed, 'total': res.total, 'types': refreshed_types})
|
||||||
self.app = None
|
self.app = None
|
||||||
self.pkg_types = None
|
self.pkg_types = None
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ class DowngradeApp(AsyncAction):
|
|||||||
if self.app:
|
if self.app:
|
||||||
success = False
|
success = False
|
||||||
try:
|
try:
|
||||||
success = self.manager.downgrade_app(self.app.model, self.root_password, self)
|
success = self.manager.downgrade(self.app.model, self.root_password, self)
|
||||||
except (requests.exceptions.ConnectionError, NoInternetException):
|
except (requests.exceptions.ConnectionError, NoInternetException):
|
||||||
success = False
|
success = False
|
||||||
self.print(self.locale_keys['internet.required'])
|
self.print(self.locale_keys['internet.required'])
|
||||||
|
|||||||
@@ -539,8 +539,8 @@ class ManageWindow(QWidget):
|
|||||||
old_installed = self.pkgs_installed
|
old_installed = self.pkgs_installed
|
||||||
self.pkgs_installed = []
|
self.pkgs_installed = []
|
||||||
|
|
||||||
for app in new_pkgs:
|
for pkg in new_pkgs:
|
||||||
app_model = PackageView(model=app, visible=app.is_application() or not self.checkbox_only_apps.isChecked())
|
app_model = PackageView(model=pkg, visible=pkg.is_application() or not self.checkbox_only_apps.isChecked())
|
||||||
self._update_pkgs_info(app_model, pkgs_info)
|
self._update_pkgs_info(app_model, pkgs_info)
|
||||||
self.pkgs.append(app_model)
|
self.pkgs.append(app_model)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user