lavkach3

Форк
0
56 строк · 2.3 Кб
1
from httpx import QueryParams
2

3

4
def clean_filter(qp: QueryParams | dict, _filter: str) -> list:
5
    """
6
        Отбирает параметры согласно фильтру
7
    """
8
    models: dict = {}
9
    new_qp: dict = {}
10
    keys_to_pop = []
11
    for k, v in qp.items():
12
        if not k.startswith(_filter):
13
            continue
14
        if v == '':
15
            v = None  # type: ignore
16
        filterred_key = k.replace(_filter, '')
17
        model, line_number, field_name = filterred_key.split('--')[:3]
18
        if len(filterred_key.split('--')) == 3:
19
            if not models.get(model):
20
                models.update({model: {line_number: {field_name: v}}})
21
            else:
22
                if not models[model].get(line_number):
23
                    models[model].update({line_number: {field_name: v}})
24
                else:
25
                    models[model][line_number].update({field_name: v})
26
            keys_to_pop.append(k)
27
        elif len(filterred_key.split('--')) == 5:
28
            _model, _line_number, _field_name = filterred_key.split('--')[2:5]
29
            if not models.get(model):
30
                models.update({model: {line_number: {field_name: {_line_number: {_field_name: v}}}}})
31
            else:
32
                if not models[model].get(line_number):
33
                    models[model].update({line_number: {field_name: {_line_number: {_field_name: v}}}})
34
                else:
35
                    if not models[model][line_number].get(field_name):
36
                        models[model][line_number].update({field_name: {_line_number: {_field_name: v}}})
37
                    else:
38
                        if not models[model][line_number][field_name].get(_line_number):
39
                            models[model][line_number][field_name].update({_line_number: {_field_name: v}})
40
                        else:
41
                            models[model][line_number][field_name][_line_number].update({_field_name: v})
42

43

44
            keys_to_pop.append(k)
45
    models_cleaned = []
46
    for k, v in models.items():
47
        for _k, _v in v.items():
48
            models_cleaned.append(_v)
49
            for __k, __v in _v.items():
50
                if isinstance(__v, dict):
51
                    l = []
52
                    for ___k, ___v in __v.items():
53
                        l.append(___v)
54
                    _v[__k] = l
55

56
    return models_cleaned
57

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

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

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

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