From 1ca0cf43138db8dc7a13debdd54ac4feacb31567 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Wed, 11 Jan 2023 14:34:05 +0200 Subject: [PATCH] refactor: use factory method --- lnbits/core/views/api.py | 17 +++++------------ lnbits/extension_manger.py | 9 +++++++++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index d67ebf4ea..591bf1a6c 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -735,17 +735,10 @@ async def api_install_extension( ext_info.download_archive() ext_info.extract_archive() - # todo: is admin only - ext = Extension( - code=ext_info.id, - is_valid=True, - is_admin_only=False, - name=ext_info.name, - hash=ext_info.hash if ext_info.module_installed else "", - ) + extension = Extension.from_installable_ext(ext_info) - db_version = (await get_dbversions()).get(ext.code, 0) - await migrate_extension_database(ext, db_version) # todo: use new module + db_version = (await get_dbversions()).get(ext_id, 0) + await migrate_extension_database(extension, db_version) # disable by default await update_user_extension(user_id=USER_ID_ALL, extension=ext_id, active=False) @@ -753,7 +746,7 @@ async def api_install_extension( if ext_info.module_installed: # update upgraded extensions list if module already installed - ext_temp_path = f"{ext.hash}/{ext.code}" + ext_temp_path = f"{extension.hash}/{extension.code}" clean_upgraded_exts = list( filter( lambda old_ext: old_ext.endswith(ext_temp_path), @@ -763,7 +756,7 @@ async def api_install_extension( settings.lnbits_upgraded_extensions = clean_upgraded_exts + [ext_temp_path] # mount routes at the very end - core_app_extra.register_new_ext_routes(ext) + core_app_extra.register_new_ext_routes(extension) except Exception as ex: logger.warning(ex) # remove downloaded archive diff --git a/lnbits/extension_manger.py b/lnbits/extension_manger.py index 9f45b1967..2c05d9137 100644 --- a/lnbits/extension_manger.py +++ b/lnbits/extension_manger.py @@ -38,6 +38,15 @@ class Extension(NamedTuple): else f"lnbits.upgrades.{self.code}-{self.hash}.{self.code}" ) + @classmethod + def from_installable_ext(cls, ext_info: "InstallableExtension") -> "Extension": + return Extension( + code=ext_info.id, + is_valid=True, + is_admin_only=False, # todo: is admin only + name=ext_info.name, + hash=ext_info.hash if ext_info.module_installed else "", + ) class ExtensionManager: def __init__(self, include_disabled_exts=False):