mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-07-02 07:01:30 +00:00
perf: update osm static
This commit is contained in:
@@ -1,31 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import datetime
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.templatetags.static import static
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from jumpserver.vendor import get_vendor_value, is_default_vendor
|
||||
|
||||
default_interface = dict((
|
||||
('logo_logout', get_vendor_value('logo_logout')),
|
||||
('logo_index', get_vendor_value('logo_index')),
|
||||
('login_image', get_vendor_value('login_image')),
|
||||
('favicon', get_vendor_value('favicon')),
|
||||
('login_title', get_vendor_value('login_title', default=_('JumpServer - An open-source PAM'))),
|
||||
('theme', get_vendor_value('theme', default='classic_green')),
|
||||
('logo_logout', static('img/logo.png')),
|
||||
('logo_index', static('img/logo_text_white.png')),
|
||||
('login_image', static('img/login_image.png')),
|
||||
('favicon', static('img/facio.ico')),
|
||||
('login_title', _('JumpServer - An open-source PAM')),
|
||||
('theme', 'classic_green'),
|
||||
('theme_info', {}),
|
||||
('footer_content', get_vendor_value('footer_content', default='')),
|
||||
('ext', get_vendor_value('interface_ext_defaults', default={})),
|
||||
('vendor', settings.VENDOR),
|
||||
('version', os.environ.get("CURRENT_VERSION", ""))
|
||||
('footer_content', ''),
|
||||
))
|
||||
|
||||
if not is_default_vendor():
|
||||
default_interface['theme_info'] = get_vendor_value('theme_info', default={})
|
||||
|
||||
current_year = datetime.datetime.now().year
|
||||
|
||||
default_context = {
|
||||
@@ -49,4 +40,4 @@ def jumpserver_processor(request):
|
||||
'FORCE_SCRIPT_NAME': settings.FORCE_SCRIPT_NAME,
|
||||
'SECURITY_VIEW_AUTH_NEED_MFA': settings.SECURITY_VIEW_AUTH_NEED_MFA,
|
||||
})
|
||||
return context
|
||||
return context
|
||||
@@ -280,9 +280,6 @@ SUGGESTION_LIMIT = CONFIG.SUGGESTION_LIMIT
|
||||
MCP_ENABLED = CONFIG.MCP_ENABLED
|
||||
|
||||
VENDOR = CONFIG.VENDOR
|
||||
VENDOR_TEMPLATES_DIR = Path(STATIC_DIR) / VENDOR.lower()
|
||||
if Path(VENDOR_TEMPLATES_DIR).is_dir():
|
||||
TEMPLATES[0]['DIRS'].insert(0, VENDOR_TEMPLATES_DIR)
|
||||
|
||||
# Trusted IP
|
||||
TRUSTED_IP_VERIFY_ENABLED = CONFIG.TRUSTED_IP_VERIFY_ENABLED
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.staticfiles import finders
|
||||
from django.templatetags.static import static
|
||||
from django.utils.translation import get_language
|
||||
|
||||
DEFAULT_VENDOR = "jumpserver"
|
||||
DEFAULT_LOGIN_TEMPLATE = "authentication/login.html"
|
||||
DEFAULT_THEME = "classic_green"
|
||||
|
||||
VENDOR_THEMES_DIR = settings.VENDOR_TEMPLATES_DIR / "themes"
|
||||
|
||||
VENDOR_LOWER = settings.VENDOR.lower()
|
||||
|
||||
|
||||
def is_default_vendor() -> bool:
|
||||
return VENDOR_LOWER == DEFAULT_VENDOR
|
||||
|
||||
|
||||
def find_theme_path(theme_dirs, theme_name: str) -> Path | None:
|
||||
filename = f"{theme_name}.json"
|
||||
for d in theme_dirs:
|
||||
p = d / filename
|
||||
if p.is_file():
|
||||
return p
|
||||
|
||||
|
||||
def _default_theme_dir() -> Path:
|
||||
data_dir = Path(settings.BASE_DIR)
|
||||
return data_dir / "xpack" / "plugins" / "interface" / "themes"
|
||||
|
||||
|
||||
def _build_theme() -> str:
|
||||
return DEFAULT_THEME if is_default_vendor() else VENDOR_LOWER
|
||||
|
||||
|
||||
def _build_theme_info() -> dict:
|
||||
default_theme_path = find_theme_path([_default_theme_dir()], DEFAULT_THEME)
|
||||
|
||||
search_dirs = [_default_theme_dir()] if is_default_vendor() else [
|
||||
settings.VENDOR_TEMPLATES_DIR / 'themes',
|
||||
_default_theme_dir(),
|
||||
]
|
||||
theme_name = DEFAULT_THEME if is_default_vendor() else VENDOR_LOWER
|
||||
|
||||
theme_path = find_theme_path(search_dirs, theme_name) or default_theme_path
|
||||
if not theme_path:
|
||||
return {}
|
||||
return json.loads(theme_path.read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def _build_vendor_info() -> dict:
|
||||
if is_default_vendor():
|
||||
return {}
|
||||
info_path = settings.VENDOR_TEMPLATES_DIR / "info.json"
|
||||
if not info_path.exists():
|
||||
return {}
|
||||
return json.loads(info_path.read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def _build_vendor_info_value(key: str, default=None):
|
||||
info = _build_vendor_info()
|
||||
return info.get(key, default)
|
||||
|
||||
|
||||
def _build_vendor_interface_ext() -> dict:
|
||||
value = _build_vendor_info_value("interface_ext", default={})
|
||||
return value if isinstance(value, dict) else {}
|
||||
|
||||
def _build_vendor_translate_ext() -> dict:
|
||||
value = _build_vendor_info_value("translate", default={})
|
||||
return value if isinstance(value, dict) else {}
|
||||
|
||||
|
||||
def _build_vendor_interface_ext_defaults() -> dict:
|
||||
defaults = {}
|
||||
translate = get_vendor_value('translate', default={})
|
||||
for field_name, field_info in _build_vendor_interface_ext().items():
|
||||
if "default" in field_info:
|
||||
default_value = field_info["default"]
|
||||
if field_info['type'] == "image":
|
||||
defaults[field_name] = _build_asset(default_value)
|
||||
else:
|
||||
defaults[field_name] = translate.get(get_language(), {}).get(default_value, default_value)
|
||||
return defaults
|
||||
|
||||
|
||||
def _build_asset(filename: str) -> str:
|
||||
if is_default_vendor():
|
||||
return static(filename)
|
||||
|
||||
vendor_path = f"{VENDOR_LOWER}/{filename}"
|
||||
if finders.find(vendor_path):
|
||||
return static(vendor_path)
|
||||
return static(filename)
|
||||
|
||||
|
||||
def _build_optional_asset(filename: str, default=None):
|
||||
if not is_default_vendor():
|
||||
vendor_path = f"{VENDOR_LOWER}/{filename}"
|
||||
if finders.find(vendor_path):
|
||||
return static(vendor_path)
|
||||
|
||||
if finders.find(filename):
|
||||
return static(filename)
|
||||
return default
|
||||
|
||||
|
||||
VENDOR_BUILDERS = {
|
||||
"theme": _build_theme,
|
||||
"theme_info": _build_theme_info,
|
||||
"logo_logout": lambda: _build_asset("img/logo.png"),
|
||||
"logo_index": lambda: _build_asset("img/logo_text_white.png"),
|
||||
"login_image": lambda: _build_asset("img/login_image.png"),
|
||||
"favicon": lambda: _build_asset("img/facio.ico"),
|
||||
"logo_white": lambda: _build_asset("img/logo_white.png"),
|
||||
"logo_text_white": lambda: _build_asset("img/logo_text_white.png"),
|
||||
"login_title": lambda: _build_vendor_info_value("login_title"),
|
||||
"footer_content": lambda: _build_vendor_info_value("footer_content"),
|
||||
"interface_ext": _build_vendor_interface_ext,
|
||||
"translate": _build_vendor_translate_ext,
|
||||
"interface_ext_defaults": _build_vendor_interface_ext_defaults,
|
||||
}
|
||||
|
||||
|
||||
def get_vendor_value(kind: str, default=None):
|
||||
builder = VENDOR_BUILDERS.get(kind)
|
||||
if not builder:
|
||||
return default
|
||||
value = builder()
|
||||
return default if value is None else value
|
||||
@@ -9,8 +9,9 @@ from common.utils import lookup_domain
|
||||
def get_interface_setting_or_default():
|
||||
if not settings.XPACK_ENABLED:
|
||||
return default_interface
|
||||
|
||||
from xpack.plugins.interface.models import Interface
|
||||
return Interface.get_interface_setting()
|
||||
return Interface.get_interface_setting(default_interface)
|
||||
|
||||
|
||||
def get_login_title():
|
||||
|
||||
Reference in New Issue
Block a user