From f8128828d44ee597751f8be6f29a641e43d36d9e Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Wed, 9 Oct 2019 19:46:06 -0300 Subject: [PATCH] [flatpak] info available for not installed applications --- CHANGELOG.md | 1 + bauh/gems/flatpak/controller.py | 45 ++++++++++++++++++++++----- bauh/gems/flatpak/model.py | 2 +- bauh/gems/flatpak/resources/locale/en | 14 ++++++++- bauh/gems/flatpak/resources/locale/es | 14 ++++++++- bauh/gems/flatpak/resources/locale/pt | 14 ++++++++- bauh/gems/flatpak/worker.py | 2 -- bauh/view/qt/info.py | 2 +- bauh/view/resources/locale/en | 4 ++- bauh/view/resources/locale/es | 4 ++- bauh/view/resources/locale/pt | 4 ++- 11 files changed, 89 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66a320c5..18ec4d88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Improvements - Flatpak: - History panel now shows formatted dates + - Info available for not installed applications - Snap: - Improved how the the application verification is done ( if a given Snap is an application ) - AUR: diff --git a/bauh/gems/flatpak/controller.py b/bauh/gems/flatpak/controller.py index ad9dc692..61d8e529 100644 --- a/bauh/gems/flatpak/controller.py +++ b/bauh/gems/flatpak/controller.py @@ -11,9 +11,12 @@ from bauh.api.abstract.view import MessageType from bauh.commons.html import strip_html from bauh.commons.system import SystemProcess, ProcessHandler from bauh.gems.flatpak import flatpak, suggestions +from bauh.gems.flatpak.constants import FLATHUB_API_URL from bauh.gems.flatpak.model import FlatpakApplication from bauh.gems.flatpak.worker import FlatpakAsyncDataLoader, FlatpakUpdateLoader +DATE_FORMAT = '%Y-%m-%dT%H:%M:%S.000Z' + class FlatpakManager(SoftwareManager): @@ -23,6 +26,7 @@ class FlatpakManager(SoftwareManager): self.api_cache = context.cache_factory.new() context.disk_loader_factory.map(FlatpakApplication, self.api_cache) self.enabled = True + self.http_client = context.http_client def get_managed_types(self) -> Set["type"]: return {FlatpakApplication} @@ -135,15 +139,42 @@ class FlatpakManager(SoftwareManager): return ProcessHandler(watcher).handle(SystemProcess(subproc=flatpak.uninstall(pkg.ref))) def get_info(self, app: FlatpakApplication) -> dict: - app_info = flatpak.get_app_info_fields(app.id, app.branch) - app_info['name'] = app.name - app_info['type'] = 'runtime' if app.runtime else 'app' - app_info['description'] = strip_html(app.description) if app.description else '' + if app.installed: + app_info = flatpak.get_app_info_fields(app.id, app.branch) + app_info['name'] = app.name + app_info['type'] = 'runtime' if app.runtime else 'app' + app_info['description'] = strip_html(app.description) if app.description else '' - if app_info.get('installed'): - app_info['installed'] = app_info['installed'].replace('?', ' ') + if app_info.get('installed'): + app_info['installed'] = app_info['installed'].replace('?', ' ') - return app_info + return app_info + else: + res = self.http_client.get_json('{}/apps/{}'.format(FLATHUB_API_URL, app.id)) + + if res: + if res.get('categories'): + res['categories'] = [c.get('name') for c in res['categories']] + + for to_del in ('screenshots', 'iconMobileUrl', 'iconDesktopUrl'): + if res.get(to_del): + del res[to_del] + + for to_strip in ('description', 'currentReleaseDescription'): + if res.get(to_strip): + res[to_strip] = strip_html(res[to_strip]) + + for to_date in ('currentReleaseDate', 'inStoreSinceDate'): + if res.get(to_date): + try: + res[to_date] = datetime.strptime(res[to_date], DATE_FORMAT) + except: + self.context.logger.error('Could not convert date string {} as {}'.format(res[to_date], DATE_FORMAT)) + pass + + return res + else: + return {} def get_history(self, pkg: FlatpakApplication) -> PackageHistory: pkg.commit = flatpak.get_commit(pkg.id, pkg.branch) diff --git a/bauh/gems/flatpak/model.py b/bauh/gems/flatpak/model.py index bae5a7fb..bbddd94c 100644 --- a/bauh/gems/flatpak/model.py +++ b/bauh/gems/flatpak/model.py @@ -24,7 +24,7 @@ class FlatpakApplication(SoftwarePackage): return self.installed and self.ref def has_info(self): - return self.installed + return bool(self.id) def can_be_downgraded(self): return self.installed and self.ref diff --git a/bauh/gems/flatpak/resources/locale/en b/bauh/gems/flatpak/resources/locale/en index a801fdfb..edd7a3c6 100644 --- a/bauh/gems/flatpak/resources/locale/en +++ b/bauh/gems/flatpak/resources/locale/en @@ -2,4 +2,16 @@ flatpak.notification.no_remotes=No Flatpak remotes set. It will not be possible flatpak.downgrade.impossible.title=Error flatpak.downgrade.impossible.body=Impossible to downgrade: the app is in its first version flatpak.downgrade.commits=Reading package commits -flatpak.downgrade.reverting=Reverting version \ No newline at end of file +flatpak.downgrade.reverting=Reverting version +flatpak.info.flatpakappid=id +flatpak.info.bugtrackerurl=bug tracker URL +flatpak.info.currentreleasedate=release date +flatpak.info.currentreleasedescription=version description +flatpak.info.currentreleaseversion=version +flatpak.info.donationurl=donation URL +flatpak.info.downloadflatpakrefurl=Ref +flatpak.info.helpurl=Help url +flatpak.info.homepageurl=Home url +flatpak.info.instoresincedate=added in +flatpak.info.projectlicense=license +flatpak.info.translateurl=translate url \ No newline at end of file diff --git a/bauh/gems/flatpak/resources/locale/es b/bauh/gems/flatpak/resources/locale/es index 7db5ad27..c46d148a 100644 --- a/bauh/gems/flatpak/resources/locale/es +++ b/bauh/gems/flatpak/resources/locale/es @@ -24,4 +24,16 @@ flatpak.history.date=fecha flatpak.history.commit=commit flatpak.history.subject=tema flatpak.downgrade.commits=Leyendo commits del paquete -flatpak.downgrade.reverting=Revirtiendo la versión \ No newline at end of file +flatpak.downgrade.reverting=Revirtiendo la versión +flatpak.info.flatpakappid=id +flatpak.info.bugtrackerurl=reporte de errores +flatpak.info.currentreleasedate=fecha de lanzamiento +flatpak.info.currentreleasedescription=descripción de la versión +flatpak.info.currentreleaseversion=versión +flatpak.info.donationurl=donaciones +flatpak.info.downloadflatpakrefurl=ref +flatpak.info.helpurl=ayuda +flatpak.info.homepageurl=página +flatpak.info.instoresincedate=agregado en +flatpak.info.projectlicense=licencia +flatpak.info.translateurl=Traducción \ No newline at end of file diff --git a/bauh/gems/flatpak/resources/locale/pt b/bauh/gems/flatpak/resources/locale/pt index be69f0fb..b02e2479 100644 --- a/bauh/gems/flatpak/resources/locale/pt +++ b/bauh/gems/flatpak/resources/locale/pt @@ -24,4 +24,16 @@ flatpak.history.date=data flatpak.history.commit=commit flatpak.history.subject=assunto flatpak.downgrade.commits=Lendo os commits do pacote -flatpak.downgrade.reverting=Revertendo a versão \ No newline at end of file +flatpak.downgrade.reverting=Revertendo a versão +flatpak.info.flatpakappid=id +flatpak.info.bugtrackerurl=reporte de erros +flatpak.info.currentreleasedate=data de lançamento +flatpak.info.currentreleasedescription=descrição da versão +flatpak.info.currentreleaseversion=versão +flatpak.info.donationurl=doações +flatpak.info.downloadflatpakrefurl=ref +flatpak.info.helpurl=ajuda +flatpak.info.homepageurl=página +flatpak.info.instoresincedate=adicionado em +flatpak.info.projectlicense=licença +flatpak.info.translateurl=tradução \ No newline at end of file diff --git a/bauh/gems/flatpak/worker.py b/bauh/gems/flatpak/worker.py index f9e709db..c9336c5f 100644 --- a/bauh/gems/flatpak/worker.py +++ b/bauh/gems/flatpak/worker.py @@ -6,8 +6,6 @@ from bauh.api.abstract.context import ApplicationContext from bauh.api.abstract.controller import SoftwareManager from bauh.api.abstract.model import PackageStatus from bauh.api.http import HttpClient - -from bauh.gems.flatpak import flatpak from bauh.gems.flatpak.constants import FLATHUB_API_URL, FLATHUB_URL from bauh.gems.flatpak.model import FlatpakApplication diff --git a/bauh/view/qt/info.py b/bauh/view/qt/info.py index e2042e94..f5ddc92c 100644 --- a/bauh/view/qt/info.py +++ b/bauh/view/qt/info.py @@ -49,7 +49,7 @@ class InfoDialog(QDialog): i18n_key = app['__app__'].model.get_type().lower() + '.info.' + attr.lower() if isinstance(app[attr], list): - val = '\n'.join(['* ' + str(e.strip()) for e in app[attr] if e]) + val = '\n'.join(['* ' + str(e).strip() for e in app[attr] if e]) else: val = str(app[attr]).strip() diff --git a/bauh/view/resources/locale/en b/bauh/view/resources/locale/en index 21a6ac02..ee30ae8a 100644 --- a/bauh/view/resources/locale/en +++ b/bauh/view/resources/locale/en @@ -119,4 +119,6 @@ downloading=Downloading console.install_logs.path=Installation logs can be found at {} author=author source=source -size=size \ No newline at end of file +size=size +categories=categories +summary=summary \ No newline at end of file diff --git a/bauh/view/resources/locale/es b/bauh/view/resources/locale/es index 23f9ec03..f29bf5a8 100644 --- a/bauh/view/resources/locale/es +++ b/bauh/view/resources/locale/es @@ -121,4 +121,6 @@ downloading=Descargando console.install_logs.path=Los registros de instalación se pueden encontrar en {} author=autor source=origen -size=tamaño \ No newline at end of file +size=tamaño +categories=categorías +summary=sumario \ No newline at end of file diff --git a/bauh/view/resources/locale/pt b/bauh/view/resources/locale/pt index 92cab931..e16addef 100644 --- a/bauh/view/resources/locale/pt +++ b/bauh/view/resources/locale/pt @@ -121,4 +121,6 @@ downloading=Baixando console.install_logs.path=Os registros de instalação podem ser encontrados em {} author=autor source=fonte -size=tamanho \ No newline at end of file +size=tamanho +categories=categorias +summary=resumo \ No newline at end of file