From aced333c0b012808129290b07260c82e0a4e0fcb Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Wed, 6 Nov 2024 12:07:12 +0200 Subject: [PATCH] fix: check the settings for extension installed (#2764) --- lnbits/app.py | 3 ++- lnbits/core/models/extensions.py | 7 +------ lnbits/core/services/extensions.py | 2 +- lnbits/settings.py | 3 +++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lnbits/app.py b/lnbits/app.py index 6f31393c0..4d7b0ca8b 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -225,7 +225,8 @@ async def check_installed_extensions(app: FastAPI): re-created. The 'data' directory (where the '.zip' files live) is expected to persist state. Zips that are missing will be re-downloaded. """ - shutil.rmtree(os.path.join("lnbits", "upgrades"), True) + + shutil.rmtree(Path(settings.lnbits_extensions_path, "upgrades"), True) installed_extensions = await build_all_installed_extensions_list(False) for ext in installed_extensions: diff --git a/lnbits/core/models/extensions.py b/lnbits/core/models/extensions.py index 922de7b38..6ce8db82d 100644 --- a/lnbits/core/models/extensions.py +++ b/lnbits/core/models/extensions.py @@ -5,7 +5,6 @@ import hashlib import json import os import shutil -import sys import zipfile from pathlib import Path from typing import Any, NamedTuple, Optional @@ -170,7 +169,7 @@ class Extension(NamedTuple): name=ext_info.name, short_description=ext_info.short_description, tile=ext_info.icon, - upgrade_hash=ext_info.hash if ext_info.module_installed else "", + upgrade_hash=settings.extension_upgrade_hash(ext_info.id), ) @@ -353,10 +352,6 @@ class InstallableExtension(BaseModel): return f"lnbits.extensions.{self.id}" return self.id - @property - def module_installed(self) -> bool: - return self.module_name in sys.modules - @property def has_installed_version(self) -> bool: if not self.ext_dir.is_dir(): diff --git a/lnbits/core/services/extensions.py b/lnbits/core/services/extensions.py index 2b4a1a436..b438ad3da 100644 --- a/lnbits/core/services/extensions.py +++ b/lnbits/core/services/extensions.py @@ -71,7 +71,7 @@ async def stop_extension_background_work(ext_id: str) -> bool: Stop background work for extension (like asyncio.Tasks, WebSockets, etc). Extensions SHOULD expose a `api_stop()` function. """ - upgrade_hash = settings.lnbits_upgraded_extensions.get(ext_id, "") + upgrade_hash = settings.extension_upgrade_hash(ext_id) ext = Extension(ext_id, True, upgrade_hash=upgrade_hash) try: diff --git a/lnbits/settings.py b/lnbits/settings.py index 8da0cabae..ecc891745 100644 --- a/lnbits/settings.py +++ b/lnbits/settings.py @@ -165,6 +165,9 @@ class InstalledExtensionsSettings(LNbitsSettings): self.lnbits_deactivated_extensions.add(ext_id) self._remove_extension_redirects(ext_id) + def extension_upgrade_hash(self, ext_id: str) -> str: + return settings.lnbits_upgraded_extensions.get(ext_id, "") + def _activate_extension_redirects(self, ext_id: str, ext_redirects: list[dict]): ext_redirect_paths = [ RedirectPath(**{"ext_id": ext_id, **er}) for er in ext_redirects