From 0730bcdb0eca79eba692ecef30e02b53bceeb02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Diot?= Date: Mon, 19 Aug 2024 13:54:12 +0100 Subject: [PATCH] Update plugins page builder with new data server builder --- src/ui/client/builder/pages/plugins.py | 24 +++++++++++++----------- src/ui/pages/plugins.py | 20 ++------------------ 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/ui/client/builder/pages/plugins.py b/src/ui/client/builder/pages/plugins.py index c9866434a..f4aad07c4 100644 --- a/src/ui/client/builder/pages/plugins.py +++ b/src/ui/client/builder/pages/plugins.py @@ -12,7 +12,7 @@ from .utils.widgets import ( ) from .utils.table import add_column from .utils.format import get_fields_from_field -from typing import Optional +from typing import List, Optional columns = [ add_column(title="Name", field="name", formatter="text"), @@ -23,7 +23,7 @@ columns = [ ] -def plugins_filter(types: Optional[list] = None) -> list: +def plugins_filter(types: List[str]) -> list: filters = [ { "type": "like", @@ -47,7 +47,7 @@ def plugins_filter(types: Optional[list] = None) -> list: } ] - if types is not None and (isinstance(types, list) and len(types) >= 2): + if len(types) >= 2: filters.append( { "type": "=", @@ -165,24 +165,26 @@ def fallback_message(msg: str, display: Optional[list] = None) -> dict: } -def plugins_list(plugins: Optional[list] = None, types: Optional[list] = None) -> dict: +def plugins_list(plugins: Optional[list] = None) -> dict: - if plugins is None or (isinstance(plugins, list) and len(plugins) == 0): + if not plugins: return fallback_message(msg="plugins_not_found") items = [] + types = set() for plugin in plugins: items.append( plugin_item( - name=plugin["name"], + name=plugin["id"], version=plugin["version"], description=plugin["description"], - is_deletable=plugin["is_deletable"], - page=plugin["page"], + is_deletable=plugin["method"] == "ui", + page=f"/plugins/{plugin['id']}" if plugin["page"] else "", plugin_type=plugin["type"], ) ) + types.add(plugin["type"]) return { "type": "card", @@ -198,11 +200,11 @@ def plugins_list(plugins: Optional[list] = None, types: Optional[list] = None) - layout="fitColumns", columns=columns, items=items, - filters=plugins_filter(types=types), + filters=plugins_filter(list(types)), ), ], } -def plugins_builder(plugins: Optional[list] = None, types: Optional[list] = None) -> list: - return [plugins_list(plugins=plugins, types=types)] +def plugins_builder(plugins: Optional[list] = None) -> list: + return [plugins_list(plugins=plugins)] diff --git a/src/ui/pages/plugins.py b/src/ui/pages/plugins.py index 960ee0174..190278f91 100644 --- a/src/ui/pages/plugins.py +++ b/src/ui/pages/plugins.py @@ -305,25 +305,9 @@ def plugins_page(): if tmp_ui_path.is_dir(): rmtree(tmp_ui_path, ignore_errors=True) - db_plugins = current_app.bw_config.get_plugins() - plugins = [] - types = set() + db_plugins = current_app.db.get_plugins() - for plugin in db_plugins: - plugins.append( - { - "name": plugin["id"], - "version": plugin["version"], - "description": plugin["description"], - "type": plugin["type"], - "is_deletable": plugin["type"] == "ui", - "page": f"/plugins/{plugin['id']}" if plugin["page"] else "", - } - ) - - types.add(plugin["type"]) - - builder = plugins_builder(plugins, list(types)) + builder = plugins_builder(db_plugins) return render_template("plugins.html", data_server_builder=b64encode(dumps(builder).encode("utf-8")).decode("ascii"))