feat: Fix vector indexing stability, add Gitea linking, enhance admin dashboard
This commit is contained in:
@@ -77,11 +77,14 @@ async def home_index(req: Request, lang: str = None):
|
||||
)
|
||||
|
||||
@router.get("/about", response_class=HTMLResponse)
|
||||
async def home_about(req: Request):
|
||||
async def home_about(req: Request, lang: str = None):
|
||||
"""
|
||||
About / Mission page.
|
||||
"""
|
||||
lang = req.session.get("lang", "de")
|
||||
if lang is None:
|
||||
lang = req.session.get("lang", "de")
|
||||
|
||||
req.session["lang"] = lang
|
||||
translations = load_translations(lang)
|
||||
|
||||
return req.app.state.render(
|
||||
@@ -93,29 +96,45 @@ async def home_about(req: Request):
|
||||
)
|
||||
|
||||
@router.get("/crew", response_class=HTMLResponse)
|
||||
async def home_crew(req: Request):
|
||||
async def home_crew(req: Request, lang: str = None):
|
||||
"""
|
||||
Crew / Characters page.
|
||||
"""
|
||||
lang = req.session.get("lang", "de")
|
||||
if lang is None:
|
||||
lang = req.session.get("lang", "de")
|
||||
|
||||
req.session["lang"] = lang
|
||||
translations = load_translations(lang)
|
||||
characters = load_characters(lang)
|
||||
|
||||
# Load roles from central config (15 roles)
|
||||
from services.config_loader import ConfigLoader
|
||||
from services.localization import merge_role_localization
|
||||
|
||||
config = ConfigLoader.load_config()
|
||||
# Merge localized content using service
|
||||
characters = merge_role_localization(config.get('roles', {}), lang)
|
||||
|
||||
user = req.session.get("user")
|
||||
|
||||
return req.app.state.render(
|
||||
req,
|
||||
"home/crew.html",
|
||||
deployment=deployment_config,
|
||||
characters=characters,
|
||||
roles=characters,
|
||||
t=translations,
|
||||
lang=lang
|
||||
lang=lang,
|
||||
user=user
|
||||
)
|
||||
|
||||
@router.get("/hardware", response_class=HTMLResponse)
|
||||
async def home_hardware(req: Request):
|
||||
async def home_hardware(req: Request, lang: str = None):
|
||||
"""
|
||||
Hardware information page.
|
||||
"""
|
||||
lang = req.session.get("lang", "de")
|
||||
if lang is None:
|
||||
lang = req.session.get("lang", "de")
|
||||
|
||||
req.session["lang"] = lang
|
||||
translations = load_translations(lang)
|
||||
|
||||
return req.app.state.render(
|
||||
@@ -127,11 +146,14 @@ async def home_hardware(req: Request):
|
||||
)
|
||||
|
||||
@router.get("/software", response_class=HTMLResponse)
|
||||
async def home_software(req: Request):
|
||||
async def home_software(req: Request, lang: str = None):
|
||||
"""
|
||||
Software information page.
|
||||
"""
|
||||
lang = req.session.get("lang", "de")
|
||||
if lang is None:
|
||||
lang = req.session.get("lang", "de")
|
||||
|
||||
req.session["lang"] = lang
|
||||
translations = load_translations(lang)
|
||||
|
||||
return req.app.state.render(
|
||||
@@ -143,11 +165,14 @@ async def home_software(req: Request):
|
||||
)
|
||||
|
||||
@router.get("/impressum", response_class=HTMLResponse)
|
||||
async def home_impressum(req: Request):
|
||||
async def home_impressum(req: Request, lang: str = None):
|
||||
"""
|
||||
Impressum / Legal notice page.
|
||||
"""
|
||||
lang = req.session.get("lang", "de")
|
||||
if lang is None:
|
||||
lang = req.session.get("lang", "de")
|
||||
|
||||
req.session["lang"] = lang
|
||||
translations = load_translations(lang)
|
||||
|
||||
return req.app.state.render(
|
||||
@@ -159,11 +184,14 @@ async def home_impressum(req: Request):
|
||||
)
|
||||
|
||||
@router.get("/datenschutz", response_class=HTMLResponse)
|
||||
async def home_datenschutz(req: Request):
|
||||
async def home_datenschutz(req: Request, lang: str = None):
|
||||
"""
|
||||
Privacy policy / Datenschutz page.
|
||||
"""
|
||||
lang = req.session.get("lang", "de")
|
||||
if lang is None:
|
||||
lang = req.session.get("lang", "de")
|
||||
|
||||
req.session["lang"] = lang
|
||||
translations = load_translations(lang)
|
||||
|
||||
return req.app.state.render(
|
||||
|
||||
Reference in New Issue
Block a user