fix(templates): fix unhashable dict in Jinja2 cache by converting available_languages global to function
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
@echo off
|
@echo off
|
||||||
cd /d "%~dp0"
|
cd /d "%~dp0"
|
||||||
call .venv\Scripts\activate.bat
|
call .venv\Scripts\activate.bat
|
||||||
@rem python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||||||
pause
|
pause
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ from app.storage import resolve_url as _resolve_image_url
|
|||||||
templates.env.filters["image_url"] = lambda v: _resolve_image_url(v) if v else ""
|
templates.env.filters["image_url"] = lambda v: _resolve_image_url(v) if v else ""
|
||||||
|
|
||||||
from app.i18n import get_languages as _get_languages
|
from app.i18n import get_languages as _get_languages
|
||||||
templates.env.globals["available_languages"] = _get_languages()
|
templates.env.globals["get_languages"] = _get_languages
|
||||||
|
|
||||||
|
|
||||||
def _get_copyright() -> str:
|
def _get_copyright() -> str:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<div class="lang-switcher" id="langSwitcher">
|
<div class="lang-switcher" id="langSwitcher">
|
||||||
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
|
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
|
||||||
<div class="lang-dropdown" id="langDropdown">
|
<div class="lang-dropdown" id="langDropdown">
|
||||||
{% for code, name in available_languages.items() %}
|
{% for code, name in get_languages().items() %}
|
||||||
<form method="post" action="/settings/language">
|
<form method="post" action="/settings/language">
|
||||||
<input type="hidden" name="language" value="{{ code }}">
|
<input type="hidden" name="language" value="{{ code }}">
|
||||||
<button type="submit" class="lang-option {% if user.language == code %}active{% endif %}">{{ name }}</button>
|
<button type="submit" class="lang-option {% if user.language == code %}active{% endif %}">{{ name }}</button>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="lang-switcher" id="langSwitcher">
|
<div class="lang-switcher" id="langSwitcher">
|
||||||
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
|
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
|
||||||
<div class="lang-dropdown" id="langDropdown">
|
<div class="lang-dropdown" id="langDropdown">
|
||||||
{% for code, name in available_languages.items() %}
|
{% for code, name in get_languages().items() %}
|
||||||
<a href="/?lang={{ code }}" class="lang-option {% if lang == code %}active{% endif %}">{{ name }}</a>
|
<a href="/?lang={{ code }}" class="lang-option {% if lang == code %}active{% endif %}">{{ name }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<h3 style="margin-bottom:.75rem">{{ 'settings.language'|t(user.language) }}</h3>
|
<h3 style="margin-bottom:.75rem">{{ 'settings.language'|t(user.language) }}</h3>
|
||||||
<form method="post" action="/settings/language" style="display:flex;align-items:center;gap:.75rem;flex-wrap:wrap">
|
<form method="post" action="/settings/language" style="display:flex;align-items:center;gap:.75rem;flex-wrap:wrap">
|
||||||
<select name="language" style="width:auto">
|
<select name="language" style="width:auto">
|
||||||
{% for code, name in available_languages.items() %}
|
{% for code, name in get_languages().items() %}
|
||||||
<option value="{{ code }}" {% if user.language == code %}selected{% endif %}>{{ name }}</option>
|
<option value="{{ code }}" {% if user.language == code %}selected{% endif %}>{{ name }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<div class="lang-switcher" id="langSwitcher">
|
<div class="lang-switcher" id="langSwitcher">
|
||||||
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
|
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
|
||||||
<div class="lang-dropdown" id="langDropdown">
|
<div class="lang-dropdown" id="langDropdown">
|
||||||
{% for code, name in available_languages.items() %}
|
{% for code, name in get_languages().items() %}
|
||||||
<a href="?lang={{ code }}" class="lang-option {% if lang == code %}active{% endif %}">{{ name }}</a>
|
<a href="?lang={{ code }}" class="lang-option {% if lang == code %}active{% endif %}">{{ name }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user