[wgem] installed size on the info window

This commit is contained in:
Vinícius Moreira
2019-12-11 19:35:20 -03:00
parent 841ae4723a
commit 6ecb45420f
5 changed files with 35 additions and 11 deletions

View File

@@ -4,7 +4,7 @@ import traceback
import requests import requests
SIZE_MULTIPLIERS = ((0.001, 'Kb'), (0.000001, 'Mb'), (0.000000001, 'Gb'), (0.000000000001, 'Tb')) from bauh.commons import system
class HttpClient: class HttpClient:
@@ -64,10 +64,4 @@ class HttpClient:
size = res.headers.get('Content-Length') size = res.headers.get('Content-Length')
if size is not None: if size is not None:
size = int(size) return system.get_human_size_str(size)
for m in SIZE_MULTIPLIERS:
size_str = str(size * m[0])
if len(size_str.split('.')[0]) < 4:
return '{0:.2f}'.format(float(size_str)) + ' ' + m[1]
return str(size)

View File

@@ -22,6 +22,8 @@ if GLOBAL_PY_LIBS not in PATH:
USE_GLOBAL_INTERPRETER = bool(os.getenv('VIRTUAL_ENV')) USE_GLOBAL_INTERPRETER = bool(os.getenv('VIRTUAL_ENV'))
SIZE_MULTIPLIERS = ((0.001, 'Kb'), (0.000001, 'Mb'), (0.000000001, 'Gb'), (0.000000000001, 'Tb'))
def gen_env(global_interpreter: bool, lang: str = DEFAULT_LANG) -> dict: def gen_env(global_interpreter: bool, lang: str = DEFAULT_LANG) -> dict:
res = {} res = {}
@@ -219,3 +221,25 @@ def new_root_subprocess(cmd: List[str], root_password: str, cwd: str = '.',
def notify_user(msg: str, app_name: str, icon_path: str): def notify_user(msg: str, app_name: str, icon_path: str):
os.system("notify-send -a {} {} '{}'".format(app_name, "-i {}".format(icon_path) if icon_path else '', msg)) os.system("notify-send -a {} {} '{}'".format(app_name, "-i {}".format(icon_path) if icon_path else '', msg))
def get_dir_size(start_path='.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
if not os.path.islink(fp):
total_size += os.path.getsize(fp)
return total_size
def get_human_size_str(size) -> str:
int_size = int(size)
for m in SIZE_MULTIPLIERS:
size_str = str(int_size * m[0])
if len(size_str.split('.')[0]) < 4:
return '{0:.2f}'.format(float(size_str)) + ' ' + m[1]
return str(int_size)

View File

@@ -16,7 +16,7 @@ from bauh.api.abstract.handler import ProcessWatcher
from bauh.api.abstract.model import SoftwarePackage, PackageAction, PackageSuggestion, PackageUpdate, PackageHistory from bauh.api.abstract.model import SoftwarePackage, PackageAction, PackageSuggestion, PackageUpdate, PackageHistory
from bauh.api.abstract.view import MessageType from bauh.api.abstract.view import MessageType
from bauh.commons.html import bold from bauh.commons.html import bold
from bauh.commons.system import ProcessHandler from bauh.commons.system import ProcessHandler, get_dir_size, get_human_size_str
from bauh.gems.web import INSTALLED_PATH, nativefier, DESKTOP_ENTRY_PATH_PATTERN from bauh.gems.web import INSTALLED_PATH, nativefier, DESKTOP_ENTRY_PATH_PATTERN
from bauh.gems.web.environment import EnvironmentUpdater from bauh.gems.web.environment import EnvironmentUpdater
from bauh.gems.web.model import WebApplication from bauh.gems.web.model import WebApplication
@@ -150,6 +150,10 @@ class WebApplicationManager(SoftwareManager):
info = {'{}_{}'.format(idx + 1, att): getattr(pkg, att) for idx, att in enumerate(('url', 'description', 'version', 'installation_dir', 'desktop_entry'))} info = {'{}_{}'.format(idx + 1, att): getattr(pkg, att) for idx, att in enumerate(('url', 'description', 'version', 'installation_dir', 'desktop_entry'))}
info['6_exec_file'] = pkg.get_exec_path() info['6_exec_file'] = pkg.get_exec_path()
info['7_icon_path'] = pkg.get_disk_icon_path() info['7_icon_path'] = pkg.get_disk_icon_path()
if os.path.exists(pkg.installation_dir):
info['8_size'] = get_human_size_str(get_dir_size(pkg.installation_dir))
return info return info
def get_history(self, pkg: SoftwarePackage) -> PackageHistory: def get_history(self, pkg: SoftwarePackage) -> PackageHistory:

View File

@@ -16,4 +16,5 @@ web.info.3_version=version
web.info.4_installation_dir=installation dir web.info.4_installation_dir=installation dir
web.info.5_desktop_entry=shortcut web.info.5_desktop_entry=shortcut
web.info.6_exec_file=executable web.info.6_exec_file=executable
web.info.7_icon_path=icon web.info.7_icon_path=icon
web.info.8_size=size

View File

@@ -16,4 +16,5 @@ web.info.3_version=versão
web.info.4_installation_dir=diretório de instalação web.info.4_installation_dir=diretório de instalação
web.info.5_desktop_entry=atalho web.info.5_desktop_entry=atalho
web.info.6_exec_file=executável web.info.6_exec_file=executável
web.info.7_icon_path=ícone web.info.7_icon_path=ícone
web.info.8_size=tamanho