[api] improvement: SoftwarePackage.get_supported_actions can now return any iterable

This commit is contained in:
Vinicius Moreira
2021-12-17 14:55:53 -03:00
parent 33292bab61
commit 3296fd34da
7 changed files with 17 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from enum import Enum from enum import Enum
from typing import List, Optional from typing import List, Optional, Iterable
from bauh.api.paths import CACHE_DIR from bauh.api.paths import CACHE_DIR
@@ -202,7 +202,7 @@ class SoftwarePackage(ABC):
""" """
pass pass
def get_custom_supported_actions(self) -> List[CustomSoftwareAction]: def get_custom_actions(self) -> Optional[Iterable[CustomSoftwareAction]]:
""" """
:return: custom supported actions :return: custom supported actions
""" """

View File

@@ -79,12 +79,12 @@ class AppImageManager(SoftwareManager):
self.file_downloader = context.file_downloader self.file_downloader = context.file_downloader
self.configman = AppImageConfigManager() self.configman = AppImageConfigManager()
self._custom_actions: Optional[Iterable[CustomSoftwareAction]] = None self._custom_actions: Optional[Iterable[CustomSoftwareAction]] = None
self.custom_app_actions = [CustomSoftwareAction(i18n_label_key='appimage.custom_action.manual_update', self.custom_app_actions = (CustomSoftwareAction(i18n_label_key='appimage.custom_action.manual_update',
i18n_status_key='appimage.custom_action.manual_update.status', i18n_status_key='appimage.custom_action.manual_update.status',
manager_method='update_file', manager_method='update_file',
requires_root=False, requires_root=False,
icon_path=resource.get_path('img/upgrade.svg', ROOT_DIR), icon_path=resource.get_path('img/upgrade.svg', ROOT_DIR),
requires_confirmation=False)] requires_confirmation=False),)
def install_file(self, root_password: str, watcher: ProcessWatcher) -> bool: def install_file(self, root_password: str, watcher: ProcessWatcher) -> bool:
file_chooser = FileChooserComponent(label=self.i18n['file'].capitalize(), file_chooser = FileChooserComponent(label=self.i18n['file'].capitalize(),

View File

@@ -1,6 +1,6 @@
import re import re
from io import StringIO from io import StringIO
from typing import List, Optional from typing import List, Optional, Iterable
from bauh.api.abstract.model import SoftwarePackage, CustomSoftwareAction from bauh.api.abstract.model import SoftwarePackage, CustomSoftwareAction
from bauh.commons import resource from bauh.commons import resource
@@ -19,7 +19,7 @@ class AppImage(SoftwarePackage):
url_download: str = None, url_icon: str = None, url_screenshot: str = None, license: str = None, author: str = None, url_download: str = None, url_icon: str = None, url_screenshot: str = None, license: str = None, author: str = None,
categories=None, icon_path: str = None, installed: bool = False, categories=None, icon_path: str = None, installed: bool = False,
url_download_latest_version: str = None, local_file_path: str = None, imported: bool = False, url_download_latest_version: str = None, local_file_path: str = None, imported: bool = False,
i18n: I18n = None, install_dir: str = None, custom_actions: List[CustomSoftwareAction] = None, updates_ignored: bool = False, i18n: I18n = None, install_dir: str = None, custom_actions: Optional[Iterable[CustomSoftwareAction]] = None, updates_ignored: bool = False,
symlink: str = None, **kwargs): symlink: str = None, **kwargs):
super(AppImage, self).__init__(id=name, name=name, version=version, latest_version=version, super(AppImage, self).__init__(id=name, name=name, version=version, latest_version=version,
icon_url=url_icon, license=license, description=description, icon_url=url_icon, license=license, description=description,
@@ -108,7 +108,7 @@ class AppImage(SoftwarePackage):
return self.name return self.name
def get_custom_supported_actions(self) -> List[CustomSoftwareAction]: def get_custom_actions(self) -> Optional[Iterable[CustomSoftwareAction]]:
if self.imported: if self.imported:
return self.custom_actions return self.custom_actions

View File

@@ -1,4 +1,4 @@
from typing import List, Set, Optional from typing import List, Set, Optional, Iterable
from bauh.api.abstract.model import SoftwarePackage, CustomSoftwareAction from bauh.api.abstract.model import SoftwarePackage, CustomSoftwareAction
from bauh.commons import resource from bauh.commons import resource
@@ -200,7 +200,7 @@ class ArchPackage(SoftwarePackage):
def get_cached_pkgbuild_path(self) -> str: def get_cached_pkgbuild_path(self) -> str:
return '{}/PKGBUILD'.format(self.get_disk_cache_path()) return '{}/PKGBUILD'.format(self.get_disk_cache_path())
def get_custom_supported_actions(self) -> List[CustomSoftwareAction]: def get_custom_actions(self) -> Optional[Iterable[CustomSoftwareAction]]:
if self.installed and self.repository == 'aur': if self.installed and self.repository == 'aur':
actions = [ACTION_AUR_REINSTALL] actions = [ACTION_AUR_REINSTALL]

View File

@@ -43,7 +43,7 @@ class SnapManager(SoftwareManager):
self.suggestions_cache = context.cache_factory.new() self.suggestions_cache = context.cache_factory.new()
self.info_path = None self.info_path = None
self.configman = SnapConfigManager() self.configman = SnapConfigManager()
self.custom_actions = [ self.custom_actions = (
CustomSoftwareAction(i18n_status_key='snap.action.refresh.status', CustomSoftwareAction(i18n_status_key='snap.action.refresh.status',
i18n_label_key='snap.action.refresh.label', i18n_label_key='snap.action.refresh.label',
icon_path=resource.get_path('img/refresh.svg', ROOT_DIR), icon_path=resource.get_path('img/refresh.svg', ROOT_DIR),
@@ -57,7 +57,7 @@ class SnapManager(SoftwareManager):
manager_method='change_channel', manager_method='change_channel',
requires_root=True, requires_root=True,
requires_confirmation=False) requires_confirmation=False)
] )
def _fill_categories(self, app: SnapApplication): def _fill_categories(self, app: SnapApplication):
categories = self.categories.get(app.name.lower()) categories = self.categories.get(app.name.lower())

View File

@@ -1,4 +1,4 @@
from typing import List, Optional, Set from typing import Optional, Set, Iterable
from bauh.api.abstract.model import SoftwarePackage, CustomSoftwareAction from bauh.api.abstract.model import SoftwarePackage, CustomSoftwareAction
from bauh.commons import resource from bauh.commons import resource
@@ -10,7 +10,7 @@ class SnapApplication(SoftwarePackage):
def __init__(self, id: str = None, name: str = None, version: str = None, latest_version: str = None, def __init__(self, id: str = None, name: str = None, version: str = None, latest_version: str = None,
description: str = None, publisher: str = None, rev: str = None, notes: str = None, description: str = None, publisher: str = None, rev: str = None, notes: str = None,
confinement: str = None, verified_publisher: bool = False, confinement: str = None, verified_publisher: bool = False,
extra_actions: List[CustomSoftwareAction] = None, extra_actions: Optional[Iterable[CustomSoftwareAction]] = None,
screenshots: Optional[Set[str]] = None, screenshots: Optional[Set[str]] = None,
license: Optional[str] = None, license: Optional[str] = None,
installed: bool = False, installed: bool = False,
@@ -92,7 +92,7 @@ class SnapApplication(SoftwarePackage):
def get_publisher(self): def get_publisher(self):
return self.publisher return self.publisher
def get_custom_supported_actions(self) -> List[CustomSoftwareAction]: def get_custom_actions(self) -> Optional[Iterable[CustomSoftwareAction]]:
if self.installed: if self.installed:
return self.extra_actions return self.extra_actions

View File

@@ -104,7 +104,7 @@ class PackagesTable(QTableWidget):
return pkg.model.has_history() or \ return pkg.model.has_history() or \
pkg.model.can_be_downgraded() or \ pkg.model.can_be_downgraded() or \
pkg.model.supports_ignored_updates() or \ pkg.model.supports_ignored_updates() or \
bool(pkg.model.get_custom_supported_actions()) bool(pkg.model.get_custom_actions())
def show_pkg_actions(self, pkg: PackageView): def show_pkg_actions(self, pkg: PackageView):
menu_row = QMenu() menu_row = QMenu()
@@ -154,8 +154,8 @@ class PackagesTable(QTableWidget):
button_name=button_name, button_name=button_name,
action=ignore_updates)) action=ignore_updates))
if bool(pkg.model.get_custom_supported_actions()): if bool(pkg.model.get_custom_actions()):
actions = [self._map_custom_action(pkg, a, menu_row) for a in pkg.model.get_custom_supported_actions()] actions = [self._map_custom_action(pkg, a, menu_row) for a in pkg.model.get_custom_actions()]
menu_row.addActions(actions) menu_row.addActions(actions)
menu_row.adjustSize() menu_row.adjustSize()