qodalis-cli-server-plugin-admin 1.0.0b7__tar.gz → 1.0.0b12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/PKG-INFO +1 -1
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/pyproject.toml +1 -1
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/__init__.py +12 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/cli_admin_builder.py +27 -1
- qodalis_cli_server_plugin_admin-1.0.0b7/qodalis_cli_admin/dashboard/assets/index-BAmUWZCS.js → qodalis_cli_server_plugin_admin-1.0.0b12/qodalis_cli_admin/dashboard/assets/index-CThBrI8x.js +54 -48
- qodalis_cli_server_plugin_admin-1.0.0b7/qodalis_cli_admin/dashboard/assets/index-BF7ofZj2.css → qodalis_cli_server_plugin_admin-1.0.0b12/qodalis_cli_admin/dashboard/assets/index-SAFC7f6i.css +1 -1
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/dashboard/index.html +3 -3
- qodalis_cli_server_plugin_admin-1.0.0b12/qodalis_cli_admin/services/admin_theme.py +117 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/spa_static_files.py +21 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/.gitignore +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/auth/__init__.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/auth/auth_controller.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/auth/auth_middleware.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/auth/jwt_service.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/controllers/__init__.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/controllers/config_controller.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/controllers/logs_controller.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/controllers/plugins_controller.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/controllers/status_controller.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/controllers/ws_clients_controller.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/dashboard/assets/wasm/qodalis_cli_wasm_bg.wasm +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/dashboard_resolver.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/services/__init__.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/services/admin_config.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/services/log_ring_buffer.py +0 -0
- {qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/qodalis_cli_admin/services/module_registry.py +0 -0
{qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: qodalis-cli-server-plugin-admin
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.0b12
|
|
4
4
|
Summary: Admin dashboard plugin for Qodalis CLI servers
|
|
5
5
|
Project-URL: Homepage, https://github.com/qodalis-solutions/cli-server-python
|
|
6
6
|
Project-URL: Repository, https://github.com/qodalis-solutions/cli-server-python
|
{qodalis_cli_server_plugin_admin-1.0.0b7 → qodalis_cli_server_plugin_admin-1.0.0b12}/pyproject.toml
RENAMED
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "qodalis-cli-server-plugin-admin"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.0b12"
|
|
8
8
|
description = "Admin dashboard plugin for Qodalis CLI servers"
|
|
9
9
|
readme = { text = "", content-type = "text/plain" }
|
|
10
10
|
license = "MIT"
|
|
@@ -6,10 +6,19 @@ from .auth.auth_middleware import create_auth_dependency
|
|
|
6
6
|
from .auth.auth_controller import create_auth_router
|
|
7
7
|
from .dashboard_resolver import resolve_dashboard_dir
|
|
8
8
|
from .services.admin_config import AdminConfig
|
|
9
|
+
from .services.admin_theme import (
|
|
10
|
+
ADMIN_THEME_MODES,
|
|
11
|
+
ADMIN_THEME_TOKENS,
|
|
12
|
+
admin_theme_json,
|
|
13
|
+
is_theme_color,
|
|
14
|
+
validate_admin_theme,
|
|
15
|
+
)
|
|
9
16
|
from .services.log_ring_buffer import LogRingBuffer
|
|
10
17
|
from .services.module_registry import ModuleRegistry
|
|
11
18
|
|
|
12
19
|
__all__ = [
|
|
20
|
+
"ADMIN_THEME_MODES",
|
|
21
|
+
"ADMIN_THEME_TOKENS",
|
|
13
22
|
"AdminBuildDeps",
|
|
14
23
|
"AdminConfig",
|
|
15
24
|
"BroadcastFn",
|
|
@@ -18,7 +27,10 @@ __all__ = [
|
|
|
18
27
|
"JwtService",
|
|
19
28
|
"LogRingBuffer",
|
|
20
29
|
"ModuleRegistry",
|
|
30
|
+
"admin_theme_json",
|
|
21
31
|
"create_auth_dependency",
|
|
22
32
|
"create_auth_router",
|
|
33
|
+
"is_theme_color",
|
|
23
34
|
"resolve_dashboard_dir",
|
|
35
|
+
"validate_admin_theme",
|
|
24
36
|
]
|
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
import os
|
|
6
6
|
import time
|
|
7
7
|
from dataclasses import dataclass
|
|
8
|
+
from collections.abc import Mapping
|
|
8
9
|
from typing import Any, Callable, Awaitable
|
|
9
10
|
|
|
10
11
|
from fastapi import APIRouter
|
|
@@ -19,6 +20,7 @@ from .controllers.config_controller import create_config_router
|
|
|
19
20
|
from .controllers.logs_controller import create_logs_router
|
|
20
21
|
from .controllers.ws_clients_controller import create_ws_clients_router
|
|
21
22
|
from .services.admin_config import AdminConfig
|
|
23
|
+
from .services.admin_theme import admin_theme_json
|
|
22
24
|
from .services.log_ring_buffer import LogRingBuffer
|
|
23
25
|
from .services.module_registry import ModuleRegistry
|
|
24
26
|
from .dashboard_resolver import resolve_dashboard_dir
|
|
@@ -64,6 +66,7 @@ class CliAdminBuilder:
|
|
|
64
66
|
self._dashboard_path: str | None = None
|
|
65
67
|
self._trust_proxy = False
|
|
66
68
|
self._users_plugin: Any = None
|
|
69
|
+
self._theme_json: bytes = admin_theme_json(None)
|
|
67
70
|
|
|
68
71
|
def set_credentials(self, username: str, password: str) -> CliAdminBuilder:
|
|
69
72
|
"""Set admin login credentials (overrides env vars)."""
|
|
@@ -91,6 +94,27 @@ class CliAdminBuilder:
|
|
|
91
94
|
self._trust_proxy = trust
|
|
92
95
|
return self
|
|
93
96
|
|
|
97
|
+
def set_theme(self, theme: Mapping[str, Any]) -> CliAdminBuilder:
|
|
98
|
+
"""Set the dashboard's color scheme.
|
|
99
|
+
|
|
100
|
+
``{"mode": "dark" | "light" | "system", "dark": {...}, "light": {...}}``
|
|
101
|
+
with color overrides per scheme; tokens left out keep the dashboard
|
|
102
|
+
defaults. Token keys are camelCase (``primaryHover``) or snake_case
|
|
103
|
+
(``primary_hover``). Values must be plain CSS colors (hex,
|
|
104
|
+
``rgb()``/``hsl()``/``oklch()``... or a named color); anything else
|
|
105
|
+
raises :class:`ValueError` here.
|
|
106
|
+
|
|
107
|
+
Example::
|
|
108
|
+
|
|
109
|
+
builder.set_theme({
|
|
110
|
+
"mode": "system",
|
|
111
|
+
"light": {"primary": "#2a6bba", "background": "#f1f6fa"},
|
|
112
|
+
"dark": {"primary": "#4f9be0", "background": "#0d1823"},
|
|
113
|
+
})
|
|
114
|
+
"""
|
|
115
|
+
self._theme_json = admin_theme_json(theme)
|
|
116
|
+
return self
|
|
117
|
+
|
|
94
118
|
def set_users_plugin(self, users_plugin: Any) -> CliAdminBuilder:
|
|
95
119
|
"""Authenticate the dashboard through the users plugin."""
|
|
96
120
|
self._users_plugin = users_plugin
|
|
@@ -164,7 +188,9 @@ class CliAdminBuilder:
|
|
|
164
188
|
dashboard_app = None
|
|
165
189
|
|
|
166
190
|
if dashboard_dir:
|
|
167
|
-
dashboard_app = SPAStaticFiles(
|
|
191
|
+
dashboard_app = SPAStaticFiles(
|
|
192
|
+
directory=dashboard_dir, html=True, theme_json=self._theme_json,
|
|
193
|
+
)
|
|
168
194
|
|
|
169
195
|
return CliAdminPlugin(
|
|
170
196
|
prefix="/api/v1/qcli",
|