2
from types import UnionType
3
from typing import Annotated, Union
4
from jinja2 import Environment, FileSystemLoader, select_autoescape
5
from typing import TYPE_CHECKING
9
from core.frontend.field import Fields, MethodType, Field
11
path = os.path.dirname(os.path.abspath(__file__))
13
template_directory = f"{path}/templates/"
15
environment = Environment(
16
loader=FileSystemLoader(template_directory),
17
autoescape=select_autoescape(("html", "jinja2"))
23
def _crud_filter(fields: 'Fields', method: 'MethodType', display_view: str = None):
25
Jinja2 флильтр, который фильтрует строки для типа отображений
26
ВАЖНО: Если table и в схеме 'get' True, то поле будет отображаться в таблице в любом режиме
30
method_type = getattr(field, method.value)
31
if display_view == 'filter':
34
elif not display_view:
36
elif getattr(method_type, display_view):
39
if display_view == 'table':
40
if getattr(field.get, 'table'):
47
def table(fields: 'Fields', method: 'MethodType'):
49
Фильтр, который смотрит, если поле подходит к методу
51
return _crud_filter(fields, method, 'table')
54
def form(fields: 'Fields', method: 'MethodType'):
56
Фильтр, который смотрит, если поле подходит к методу
58
return _crud_filter(fields, method, 'form')
62
environment.filters['table'] = table