mirror of
https://github.com/fastapi-admin/fastapi-admin.git
synced 2025-08-06 18:49:47 +08:00
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import os
|
|
from datetime import date
|
|
from typing import Any
|
|
from urllib.parse import urlencode
|
|
|
|
from jinja2 import pass_context
|
|
from starlette.requests import Request
|
|
from starlette.templating import Jinja2Templates
|
|
|
|
from fastapi_admin import VERSION
|
|
from fastapi_admin.constants import BASE_DIR
|
|
|
|
templates = Jinja2Templates(directory=os.path.join(BASE_DIR, "templates"))
|
|
templates.env.globals["VERSION"] = VERSION
|
|
templates.env.globals["NOW_YEAR"] = date.today().year
|
|
templates.env.add_extension("jinja2.ext.i18n")
|
|
|
|
|
|
@pass_context
|
|
def current_page_with_params(context: dict, params: dict):
|
|
request = context.get("request") # type:Request
|
|
full_path = request.scope["raw_path"].decode()
|
|
query_params = dict(request.query_params)
|
|
for k, v in params.items():
|
|
query_params[k] = v
|
|
return full_path + "?" + urlencode(query_params)
|
|
|
|
|
|
templates.env.filters["current_page_with_params"] = current_page_with_params
|
|
|
|
|
|
def set_global_env(name: str, value: Any):
|
|
templates.env.globals[name] = value
|
|
|
|
|
|
def add_template_folder(*folders: str):
|
|
for folder in folders:
|
|
templates.env.loader.searchpath.insert(0, folder)
|