refactoring to use ApplicationContext

This commit is contained in:
Vinicius Moreira
2019-08-30 13:06:24 -03:00
parent 60fc6d8872
commit 71959e8e04
4 changed files with 25 additions and 36 deletions

View File

@@ -1,27 +1,25 @@
from argparse import Namespace
from threading import Thread
from typing import List, Set, Type
from bauh_api.abstract.controller import SoftwareManager, SearchResult
from bauh_api.abstract.controller import SoftwareManager, SearchResult, ApplicationContext
from bauh_api.abstract.handler import ProcessWatcher
from bauh_api.abstract.model import SoftwarePackage, PackageUpdate, PackageHistory
from bauh_api.util.disk import DiskCacheLoader
from bauh_api.util.disk import DiskCacheLoaderFactory
from bauh import ROOT_DIR
SUGGESTIONS_LIMIT = 6
class GenericSoftwareManager(SoftwareManager):
def __init__(self, managers: List[SoftwareManager], disk_loader_factory: DiskCacheLoaderFactory, app_args: Namespace, locale_keys: dict):
super(GenericSoftwareManager, self).__init__(app_args=app_args, app_cache=None, locale_keys=locale_keys, app_root_dir=ROOT_DIR, http_client=None)
def __init__(self, managers: List[SoftwareManager], context: ApplicationContext, disk_loader_factory: DiskCacheLoaderFactory):
super(GenericSoftwareManager, self).__init__(context=context, app_cache=None)
self.managers = managers
self.map = {t: m for m in self.managers for t in m.get_managed_types()}
self.disk_loader_factory = disk_loader_factory
self._enabled_map = {} if app_args.check_packaging_once else None
self._enabled_map = {} if context.args.check_packaging_once else None
self.thread_prepare = None
self.i18n = context.i18n
def _sort(self, apps: List[SoftwarePackage], word: str) -> List[SoftwarePackage]:
@@ -179,8 +177,8 @@ class GenericSoftwareManager(SoftwareManager):
if man:
return man.get_history(app)
def get_managed_types(self) -> Set["type"]:
return None
def get_managed_types(self) -> Set[Type[SoftwarePackage]]:
pass
def is_enabled(self):
return True
@@ -247,7 +245,7 @@ class GenericSoftwareManager(SoftwareManager):
warnings.extend(man_warnings)
else:
warnings.append(self.locale_keys['warning.no_managers'])
warnings.append(self.i18n['warning.no_managers'])
return warnings

View File

@@ -1,14 +1,12 @@
import inspect
import os
import pkgutil
from argparse import Namespace
from typing import List, Dict
from bauh_api.abstract.controller import SoftwareManager
from bauh_api.abstract.controller import SoftwareManager, ApplicationContext
from bauh_api.util.cache import Cache
from bauh_api.util.http import HttpClient
from bauh import ROOT_DIR, __app_name__
from bauh import __app_name__
from bauh.util import util
ignore_modules = {'{}_api'.format(__app_name__)}
@@ -26,7 +24,7 @@ def find_manager(member):
return manager_found
def load_managers(caches: List[Cache], cache_map: Dict[type, Cache], locale_keys: Dict[str, str], app_args: Namespace, http_client: HttpClient) -> List[SoftwareManager]:
def load_managers(caches: List[Cache], cache_map: Dict[type, Cache], context: ApplicationContext) -> List[SoftwareManager]:
managers = []
for m in pkgutil.iter_modules():
@@ -40,14 +38,10 @@ def load_managers(caches: List[Cache], cache_map: Dict[type, Cache], locale_keys
locale_path = '{}/resources/locale'.format(module.__path__[0])
if os.path.exists(locale_path):
locale_keys.update(util.get_locale_keys(app_args.locale, locale_path))
context.i18n.update(util.get_locale_keys(context.args.locale, locale_path))
app_cache = Cache(expiration_time=app_args.cache_exp)
man = manager_class(app_args=app_args,
app_root_dir=ROOT_DIR,
http_client=http_client,
locale_keys=locale_keys,
app_cache=app_cache)
app_cache = Cache(expiration_time=context.args.cache_exp)
man = manager_class(context=context, app_cache=app_cache)
for t in man.get_managed_types():
cache_map[t] = app_cache