lavkach3

Форк
0
/
enviroment.py 
100 строк · 2.3 Кб
1
import os
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
6

7

8
if TYPE_CHECKING:
9
    from core.frontend.field import Fields, MethodType, Field
10

11
path = os.path.dirname(os.path.abspath(__file__))
12

13
template_directory = f"{path}/templates/"
14

15
environment = Environment(
16
    loader=FileSystemLoader(template_directory),
17
    autoescape=select_autoescape(("html", "jinja2"))
18
)
19

20

21

22

23
def _crud_filter(fields: 'Fields', method: 'MethodType', display_view: str = None):
24
    """
25
        Jinja2 флильтр, который фильтрует строки для типа отображений
26
        ВАЖНО: Если table и в схеме 'get' True, то поле будет отображаться в таблице в любом режиме
27
    """
28
    res = []
29
    for field in fields:
30
        method_type = getattr(field, method.value)
31
        if display_view == 'filter':
32
            if field.is_filter:
33
                res.append(field)
34
        elif not display_view:
35
            res.append(field)
36
        elif getattr(method_type, display_view):
37
            res.append(field)
38
        else:
39
            if display_view == 'table':
40
                if getattr(field.get, 'table'):
41
                    res.append(field)
42

43
    return res
44
    #return [v for v in fields if getattr(getattr(v, method.value), display_view)]
45

46

47
def table(fields: 'Fields', method: 'MethodType'):
48
    """
49
        Фильтр, который смотрит, если поле подходит к методу
50
    """
51
    return _crud_filter(fields, method, 'table')
52

53

54
def form(fields: 'Fields', method: 'MethodType'):
55
    """
56
        Фильтр, который смотрит, если поле подходит к методу
57
    """
58
    return _crud_filter(fields, method, 'form')
59

60

61

62
environment.filters['table'] = table
63

64

65

66

67

68
# Классы исключения для подбора типов
69
passed_classes = [
70
    Annotated,
71
    Union,
72
    UnionType,
73
]
74

75
readonly_fields = [
76
    'id',
77
    'lsn',
78
    'created_at',
79
    'updated_at',
80
    'company_id'
81
]
82
hidden_fields = [
83
    'lsn',
84
    'company_id',
85
    'id'
86
]
87
table_fields = [
88
    'id',
89
    'created_at'
90
]
91

92
reserved_fields = [
93
    # 'id',
94
    'company_id',
95
    'created_by',
96
    'edited_by',
97
    'created_at',
98
    'updated_at',
99
    'vars'
100
]
101

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.