refactor: use factory method
This commit is contained in:
parent
0ab913e502
commit
1ca0cf4313
2 changed files with 14 additions and 12 deletions
|
|
@ -735,17 +735,10 @@ async def api_install_extension(
|
||||||
ext_info.download_archive()
|
ext_info.download_archive()
|
||||||
ext_info.extract_archive()
|
ext_info.extract_archive()
|
||||||
|
|
||||||
# todo: is admin only
|
extension = Extension.from_installable_ext(ext_info)
|
||||||
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 "",
|
|
||||||
)
|
|
||||||
|
|
||||||
db_version = (await get_dbversions()).get(ext.code, 0)
|
db_version = (await get_dbversions()).get(ext_id, 0)
|
||||||
await migrate_extension_database(ext, db_version) # todo: use new module
|
await migrate_extension_database(extension, db_version)
|
||||||
|
|
||||||
# disable by default
|
# disable by default
|
||||||
await update_user_extension(user_id=USER_ID_ALL, extension=ext_id, active=False)
|
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:
|
if ext_info.module_installed:
|
||||||
# update upgraded extensions list if module already 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(
|
clean_upgraded_exts = list(
|
||||||
filter(
|
filter(
|
||||||
lambda old_ext: old_ext.endswith(ext_temp_path),
|
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]
|
settings.lnbits_upgraded_extensions = clean_upgraded_exts + [ext_temp_path]
|
||||||
|
|
||||||
# mount routes at the very end
|
# 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:
|
except Exception as ex:
|
||||||
logger.warning(ex)
|
logger.warning(ex)
|
||||||
# remove downloaded archive
|
# remove downloaded archive
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,15 @@ class Extension(NamedTuple):
|
||||||
else f"lnbits.upgrades.{self.code}-{self.hash}.{self.code}"
|
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:
|
class ExtensionManager:
|
||||||
def __init__(self, include_disabled_exts=False):
|
def __init__(self, include_disabled_exts=False):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue