feat: customize site banners and login notices
This commit is contained in:
@@ -1,9 +1,20 @@
|
||||
import re
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import AliasChoices, Field
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
from .build_info import BUILD_NUMBER, CHANGELOG
|
||||
|
||||
|
||||
_BANNER_COLOR_PATTERN = re.compile(r"^#[0-9a-f]{6}$")
|
||||
|
||||
|
||||
def normalize_banner_color(value: object) -> Optional[str]:
|
||||
color = str(value or "").strip().lower()
|
||||
return color if _BANNER_COLOR_PATTERN.fullmatch(color) else None
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
model_config = SettingsConfigDict(env_prefix="")
|
||||
app_name: str = "Magent"
|
||||
@@ -108,6 +119,15 @@ class Settings(BaseSettings):
|
||||
site_banner_tone: str = Field(
|
||||
default="info", validation_alias=AliasChoices("SITE_BANNER_TONE")
|
||||
)
|
||||
site_banner_background_color: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("SITE_BANNER_BACKGROUND_COLOR")
|
||||
)
|
||||
site_banner_border_color: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("SITE_BANNER_BORDER_COLOR")
|
||||
)
|
||||
site_login_message: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("SITE_LOGIN_MESSAGE")
|
||||
)
|
||||
site_login_show_jellyfin_login: bool = Field(
|
||||
default=True, validation_alias=AliasChoices("SITE_LOGIN_SHOW_JELLYFIN_LOGIN")
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user