44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import datetime
|
|
from pathlib import Path
|
|
|
|
from babel.dates import format_date
|
|
from fastapi import Request
|
|
from fastapi.templating import Jinja2Templates
|
|
|
|
from gallery.version import __version__
|
|
|
|
from ...translation import _
|
|
from .tag import TagUtil
|
|
|
|
|
|
def is_widget(request: Request) -> bool:
|
|
return (request.url.hostname and request.url.hostname.startswith("weather")) or (
|
|
request.query_params.get("widget") is not None
|
|
)
|
|
|
|
|
|
def context_processor(request: Request) -> dict:
|
|
return {
|
|
"is_widget": is_widget(request),
|
|
}
|
|
|
|
|
|
def build_templates(templates_dir: Path | None = None, filters: dict | None = None) -> Jinja2Templates:
|
|
directory = [Path(__file__).parent.parent / "templates"]
|
|
if templates_dir:
|
|
directory.append(templates_dir)
|
|
templates = Jinja2Templates(directory=directory, context_processors=[context_processor])
|
|
templates.env.globals.update(
|
|
{
|
|
"_": _,
|
|
"version": __version__,
|
|
"format_date": format_date,
|
|
"datetime": datetime,
|
|
"tag_util": TagUtil,
|
|
"DATE_FORMAT": "E, d MMMM Y",
|
|
}
|
|
)
|
|
if filters:
|
|
templates.env.filters.update(filters)
|
|
return templates
|