[flatpak] info available for not installed applications

This commit is contained in:
Vinicius Moreira
2019-10-09 19:46:06 -03:00
parent 589264b096
commit f8128828d4
11 changed files with 89 additions and 17 deletions

View File

@@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Improvements ### Improvements
- Flatpak: - Flatpak:
- History panel now shows formatted dates - History panel now shows formatted dates
- Info available for not installed applications
- Snap: - Snap:
- Improved how the the application verification is done ( if a given Snap is an application ) - Improved how the the application verification is done ( if a given Snap is an application )
- AUR: - AUR:

View File

@@ -11,9 +11,12 @@ from bauh.api.abstract.view import MessageType
from bauh.commons.html import strip_html from bauh.commons.html import strip_html
from bauh.commons.system import SystemProcess, ProcessHandler from bauh.commons.system import SystemProcess, ProcessHandler
from bauh.gems.flatpak import flatpak, suggestions 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.model import FlatpakApplication
from bauh.gems.flatpak.worker import FlatpakAsyncDataLoader, FlatpakUpdateLoader from bauh.gems.flatpak.worker import FlatpakAsyncDataLoader, FlatpakUpdateLoader
DATE_FORMAT = '%Y-%m-%dT%H:%M:%S.000Z'
class FlatpakManager(SoftwareManager): class FlatpakManager(SoftwareManager):
@@ -23,6 +26,7 @@ class FlatpakManager(SoftwareManager):
self.api_cache = context.cache_factory.new() self.api_cache = context.cache_factory.new()
context.disk_loader_factory.map(FlatpakApplication, self.api_cache) context.disk_loader_factory.map(FlatpakApplication, self.api_cache)
self.enabled = True self.enabled = True
self.http_client = context.http_client
def get_managed_types(self) -> Set["type"]: def get_managed_types(self) -> Set["type"]:
return {FlatpakApplication} return {FlatpakApplication}
@@ -135,15 +139,42 @@ class FlatpakManager(SoftwareManager):
return ProcessHandler(watcher).handle(SystemProcess(subproc=flatpak.uninstall(pkg.ref))) return ProcessHandler(watcher).handle(SystemProcess(subproc=flatpak.uninstall(pkg.ref)))
def get_info(self, app: FlatpakApplication) -> dict: def get_info(self, app: FlatpakApplication) -> dict:
app_info = flatpak.get_app_info_fields(app.id, app.branch) if app.installed:
app_info['name'] = app.name app_info = flatpak.get_app_info_fields(app.id, app.branch)
app_info['type'] = 'runtime' if app.runtime else 'app' app_info['name'] = app.name
app_info['description'] = strip_html(app.description) if app.description else '' 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'): if app_info.get('installed'):
app_info['installed'] = app_info['installed'].replace('?', ' ') 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: def get_history(self, pkg: FlatpakApplication) -> PackageHistory:
pkg.commit = flatpak.get_commit(pkg.id, pkg.branch) pkg.commit = flatpak.get_commit(pkg.id, pkg.branch)

View File

@@ -24,7 +24,7 @@ class FlatpakApplication(SoftwarePackage):
return self.installed and self.ref return self.installed and self.ref
def has_info(self): def has_info(self):
return self.installed return bool(self.id)
def can_be_downgraded(self): def can_be_downgraded(self):
return self.installed and self.ref return self.installed and self.ref

View File

@@ -3,3 +3,15 @@ flatpak.downgrade.impossible.title=Error
flatpak.downgrade.impossible.body=Impossible to downgrade: the app is in its first version flatpak.downgrade.impossible.body=Impossible to downgrade: the app is in its first version
flatpak.downgrade.commits=Reading package commits flatpak.downgrade.commits=Reading package commits
flatpak.downgrade.reverting=Reverting version 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

View File

@@ -25,3 +25,15 @@ flatpak.history.commit=commit
flatpak.history.subject=tema flatpak.history.subject=tema
flatpak.downgrade.commits=Leyendo commits del paquete flatpak.downgrade.commits=Leyendo commits del paquete
flatpak.downgrade.reverting=Revirtiendo la versión 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

View File

@@ -25,3 +25,15 @@ flatpak.history.commit=commit
flatpak.history.subject=assunto flatpak.history.subject=assunto
flatpak.downgrade.commits=Lendo os commits do pacote flatpak.downgrade.commits=Lendo os commits do pacote
flatpak.downgrade.reverting=Revertendo a versão 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

View File

@@ -6,8 +6,6 @@ from bauh.api.abstract.context import ApplicationContext
from bauh.api.abstract.controller import SoftwareManager from bauh.api.abstract.controller import SoftwareManager
from bauh.api.abstract.model import PackageStatus from bauh.api.abstract.model import PackageStatus
from bauh.api.http import HttpClient 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.constants import FLATHUB_API_URL, FLATHUB_URL
from bauh.gems.flatpak.model import FlatpakApplication from bauh.gems.flatpak.model import FlatpakApplication

View File

@@ -49,7 +49,7 @@ class InfoDialog(QDialog):
i18n_key = app['__app__'].model.get_type().lower() + '.info.' + attr.lower() i18n_key = app['__app__'].model.get_type().lower() + '.info.' + attr.lower()
if isinstance(app[attr], list): 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: else:
val = str(app[attr]).strip() val = str(app[attr]).strip()

View File

@@ -120,3 +120,5 @@ console.install_logs.path=Installation logs can be found at {}
author=author author=author
source=source source=source
size=size size=size
categories=categories
summary=summary

View File

@@ -122,3 +122,5 @@ console.install_logs.path=Los registros de instalación se pueden encontrar en {
author=autor author=autor
source=origen source=origen
size=tamaño size=tamaño
categories=categorías
summary=sumario

View File

@@ -122,3 +122,5 @@ console.install_logs.path=Os registros de instalação podem ser encontrados em
author=autor author=autor
source=fonte source=fonte
size=tamanho size=tamanho
categories=categorias
summary=resumo