From 4d0660e0ea4348c5cb0a1ee51fd1ee87182fc1ac Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Sat, 2 Jan 2021 10:13:53 -0300 Subject: [PATCH] [arch] fix -> crashing when information of a given package is not available --- CHANGELOG.md | 8 ++++++++ bauh/__init__.py | 2 +- bauh/gems/arch/controller.py | 31 ++++++++++++++++++------------- bauh/gems/arch/pacman.py | 2 +- bauh/view/qt/thread.py | 7 ++++++- bauh/view/qt/window.py | 13 ++++++++++--- bauh/view/resources/locale/ca | 1 + bauh/view/resources/locale/de | 1 + bauh/view/resources/locale/en | 1 + bauh/view/resources/locale/es | 1 + bauh/view/resources/locale/fr | 1 + bauh/view/resources/locale/it | 1 + bauh/view/resources/locale/pt | 1 + bauh/view/resources/locale/ru | 1 + bauh/view/resources/locale/tr | 1 + 15 files changed, 53 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02d4a88f..9c6d0163 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [0.9.12] 2021 +### Fixes +- Arch + - crashing when information of a given package is not available + +- UI + - displaying a popup when information of a given package is not available + ## [0.9.11] 2020-12-30 ### New system requirements - **python-dateutil**: better Python library for date handling (install the equivalent package for your Linux distribution before upgrading bauh) diff --git a/bauh/__init__.py b/bauh/__init__.py index 99b39f79..4cd72d50 100644 --- a/bauh/__init__.py +++ b/bauh/__init__.py @@ -1,4 +1,4 @@ -__version__ = '0.9.11' +__version__ = '0.9.12' __app_name__ = 'bauh' import os diff --git a/bauh/gems/arch/controller.py b/bauh/gems/arch/controller.py index e8ec10a2..2c1798c8 100644 --- a/bauh/gems/arch/controller.py +++ b/bauh/gems/arch/controller.py @@ -1417,21 +1417,23 @@ class ArchManager(SoftwareManager): t.start() info = pacman.get_info_dict(pkg.name) - self._parse_dates_string_from_info(pkg.name, info) - if pkg.commit: - info['commit'] = pkg.commit + if info is not None: + self._parse_dates_string_from_info(pkg.name, info) - if pkg.last_modified: - info['last_modified'] = self._parse_timestamp(ts=pkg.last_modified, - error_msg="Could not parse AUR package '{}' 'last_modified' field ({})".format(pkg.name, pkg.last_modified)) + if pkg.commit: + info['commit'] = pkg.commit - t.join() + if pkg.last_modified: + info['last_modified'] = self._parse_timestamp(ts=pkg.last_modified, + error_msg="Could not parse AUR package '{}' 'last_modified' field ({})".format(pkg.name, pkg.last_modified)) - if pkg.pkgbuild: - info['13_pkg_build'] = pkg.pkgbuild + t.join() - info['14_installed_files'] = pacman.list_installed_files(pkg.name) + if pkg.pkgbuild: + info['13_pkg_build'] = pkg.pkgbuild + + info['14_installed_files'] = pacman.list_installed_files(pkg.name) return info else: @@ -1501,9 +1503,12 @@ class ArchManager(SoftwareManager): def _get_info_repo_pkg(self, pkg: ArchPackage) -> dict: info = pacman.get_info_dict(pkg.name, remote=not pkg.installed) - self._parse_dates_string_from_info(pkg.name, info) - if pkg.installed: - info['installed files'] = pacman.list_installed_files(pkg.name) + + if info is not None: + self._parse_dates_string_from_info(pkg.name, info) + + if pkg.installed: + info['installed files'] = pacman.list_installed_files(pkg.name) return info diff --git a/bauh/gems/arch/pacman.py b/bauh/gems/arch/pacman.py index 13cadd25..e629ed7e 100644 --- a/bauh/gems/arch/pacman.py +++ b/bauh/gems/arch/pacman.py @@ -69,7 +69,7 @@ def get_info_list(pkg_name: str, remote: bool = False) -> List[tuple]: return re.findall(r'(\w+\s?\w+)\s*:\s*(.+(\n\s+.+)*)', info) -def get_info_dict(pkg_name: str, remote: bool = False) -> dict: +def get_info_dict(pkg_name: str, remote: bool = False) -> Optional[dict]: list_attrs = {'depends on', 'required by', 'conflicts with'} info_list = get_info_list(pkg_name, remote) diff --git a/bauh/view/qt/thread.py b/bauh/view/qt/thread.py index e386138b..126b6415 100644 --- a/bauh/view/qt/thread.py +++ b/bauh/view/qt/thread.py @@ -644,7 +644,12 @@ class ShowPackageInfo(AsyncAction): def run(self): if self.pkg: info = {'__app__': self.pkg} - info.update(self.manager.get_info(self.pkg.model)) + + pkg_info = self.manager.get_info(self.pkg.model) + + if pkg_info: + info.update(pkg_info) + self.notify_finished(info) self.pkg = None diff --git a/bauh/view/qt/window.py b/bauh/view/qt/window.py index d40d5a89..428f6f40 100755 --- a/bauh/view/qt/window.py +++ b/bauh/view/qt/window.py @@ -1216,9 +1216,16 @@ class ManageWindow(QWidget): def _finish_show_info(self, pkg_info: dict): self._finish_action(action_id=ACTION_INFO) - dialog_info = InfoDialog(pkg_info=pkg_info, icon_cache=self.icon_cache, - i18n=self.i18n, screen_size=self.screen_size) - dialog_info.exec_() + + if pkg_info: + if len(pkg_info) > 1: + dialog_info = InfoDialog(pkg_info=pkg_info, icon_cache=self.icon_cache, + i18n=self.i18n, screen_size=self.screen_size) + dialog_info.exec_() + else: + dialog.show_message(title=self.i18n['warning'].capitalize(), + body=self.i18n['manage_window.info.no_info'].format(bold(pkg_info['__app__'].model.name)), + type_=MessageType.WARNING) def begin_show_screenshots(self, pkg: PackageView): self._begin_action(action_label=self.i18n['manage_window.status.screenshots'].format(bold(pkg.model.name)), diff --git a/bauh/view/resources/locale/ca b/bauh/view/resources/locale/ca index 95c5812c..b81a15bf 100644 --- a/bauh/view/resources/locale/ca +++ b/bauh/view/resources/locale/ca @@ -316,6 +316,7 @@ manage_window.checkbox.show_details=Mostra detalls manage_window.columns.installed=Installed manage_window.columns.latest_version=Versió més recent manage_window.columns.update=Voleu actualitzar? +manage_window.info.no_info=There is no information available for {} manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Actualitzacions manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/de b/bauh/view/resources/locale/de index 8b555c43..7054b55c 100644 --- a/bauh/view/resources/locale/de +++ b/bauh/view/resources/locale/de @@ -315,6 +315,7 @@ manage_window.checkbox.show_details=Details anzeigen manage_window.columns.installed=Installed manage_window.columns.latest_version=Neueste Version manage_window.columns.update=Upgraden? +manage_window.info.no_info=There is no information available for {} manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Updates manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/en b/bauh/view/resources/locale/en index acd65ae9..8bc8ab8b 100644 --- a/bauh/view/resources/locale/en +++ b/bauh/view/resources/locale/en @@ -316,6 +316,7 @@ manage_window.checkbox.show_details=Show details manage_window.columns.installed=Installed manage_window.columns.latest_version=Latest Version manage_window.columns.update=Upgrade ? +manage_window.info.no_info=There is no information available for {} manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Updates manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/es b/bauh/view/resources/locale/es index 72d12dd0..99eb8c7d 100644 --- a/bauh/view/resources/locale/es +++ b/bauh/view/resources/locale/es @@ -317,6 +317,7 @@ manage_window.checkbox.show_details=Mostrar detalles manage_window.columns.installed=Instaladas manage_window.columns.latest_version=Versión más reciente manage_window.columns.update=¿Quiere actualizar? +manage_window.info.no_info=No hay información disponible para {} manage_window.label.apps_displayed.tip=Applicaciones mostradas / disponibles manage_window.label.updates=Actualizaciones manage_window.name_filter.button_tooltip=Haga clic aquí para filtrar aplicaciones por nombre diff --git a/bauh/view/resources/locale/fr b/bauh/view/resources/locale/fr index 30e3bd23..f4af78a4 100644 --- a/bauh/view/resources/locale/fr +++ b/bauh/view/resources/locale/fr @@ -314,6 +314,7 @@ manage_window.checkbox.show_details=Détails manage_window.columns.installed=Installé manage_window.columns.latest_version=Dernière Version manage_window.columns.update=Mettre à jour ? +manage_window.info.no_info=There is no information available for {} manage_window.label.updates=Mises à jour manage_window.name_filter.placeholder=Filtrer par nom manage_window.name_filter.tooltip=Taper ici pour filtrer les applications par nom diff --git a/bauh/view/resources/locale/it b/bauh/view/resources/locale/it index 2e9e5d6c..c72407e6 100644 --- a/bauh/view/resources/locale/it +++ b/bauh/view/resources/locale/it @@ -317,6 +317,7 @@ manage_window.checkbox.show_details=Mostra dettagli manage_window.columns.installed=Installed manage_window.columns.latest_version=Ultima Versione manage_window.columns.update=Upgrade ? +manage_window.info.no_info=There is no information available for {} manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Aggiornamenti manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/pt b/bauh/view/resources/locale/pt index 58e7b48f..2166889e 100644 --- a/bauh/view/resources/locale/pt +++ b/bauh/view/resources/locale/pt @@ -316,6 +316,7 @@ manage_window.checkbox.show_details=Mostrar detalhes manage_window.columns.installed=Instalado manage_window.columns.latest_version=Última Versão manage_window.columns.update=Atualizar ? +manage_window.info.no_info=Não há informação disponível para {} manage_window.label.apps_displayed.tip=Aplicações exibidas / disponíveis manage_window.label.updates=Atualizações manage_window.name_filter.button_tooltip=Clique aqui para filtrar aplicativos por nome diff --git a/bauh/view/resources/locale/ru b/bauh/view/resources/locale/ru index 3777c7ac..09fe56f9 100644 --- a/bauh/view/resources/locale/ru +++ b/bauh/view/resources/locale/ru @@ -315,6 +315,7 @@ manage_window.checkbox.show_details=Показать детали manage_window.columns.installed=Installed manage_window.columns.latest_version=Последняя версия manage_window.columns.update=Обновить? +manage_window.info.no_info=There is no information available for {} manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Обновления manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/tr b/bauh/view/resources/locale/tr index 84db32dc..83e08628 100644 --- a/bauh/view/resources/locale/tr +++ b/bauh/view/resources/locale/tr @@ -315,6 +315,7 @@ manage_window.checkbox.show_details=Detayları göster manage_window.columns.installed=Yüklü manage_window.columns.latest_version=Son sürüm manage_window.columns.update=Yükselt ? +manage_window.info.no_info=There is no information available for {} manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Güncellemeler manage_window.name_filter.button_tooltip=Click here to filter apps by name