161 lines
5.4 KiB
Python
161 lines
5.4 KiB
Python
![]() |
'''Data models for BRE portal'''
|
|||
|
from enum import Enum, IntEnum, unique
|
|||
|
|
|||
|
|
|||
|
@unique
|
|||
|
class InputMethod(Enum):
|
|||
|
'''Метод ввода данных на форме'''
|
|||
|
read_only = -1
|
|||
|
combo_box = 0
|
|||
|
text_input = 1
|
|||
|
text_area = 2
|
|||
|
date_picker = 3
|
|||
|
combo_dialog = 4
|
|||
|
combo_dialog_simple_list = 5 # no search required to select from list
|
|||
|
bool_toggle = 6
|
|||
|
|
|||
|
|
|||
|
def text_to_method(text: str) -> InputMethod:
|
|||
|
'''Input method from text transformation'''
|
|||
|
if text == 'Текстовое поле':
|
|||
|
return InputMethod.text_input
|
|||
|
if text == 'Тумблер':
|
|||
|
return InputMethod.bool_toggle
|
|||
|
if text == 'Выпад. Cписок':
|
|||
|
return InputMethod.combo_box
|
|||
|
if text == 'Диалог (с выбором)':
|
|||
|
return InputMethod.combo_dialog
|
|||
|
return InputMethod.read_only
|
|||
|
|
|||
|
|
|||
|
_FIELD_DATA = [
|
|||
|
('Тип задачи', InputMethod.combo_box),
|
|||
|
('Статус', InputMethod.read_only),
|
|||
|
('Название задачи', InputMethod.text_input),
|
|||
|
('Название контента', InputMethod.text_input),
|
|||
|
('Характер изменения текста', InputMethod.combo_dialog_simple_list),
|
|||
|
('Название контента для библиографической записи', InputMethod.text_input),
|
|||
|
('Краткая дефиниция', InputMethod.text_input),
|
|||
|
('Неизменный', InputMethod.read_only),
|
|||
|
('Тип объекта', InputMethod.combo_dialog),
|
|||
|
('Тематический словник', InputMethod.combo_dialog),
|
|||
|
('Метки', InputMethod.combo_dialog),
|
|||
|
('Курирующий редактор', InputMethod.combo_box),
|
|||
|
('Исполнитель', InputMethod.combo_box),
|
|||
|
('Ответственный за задачу', InputMethod.combo_box),
|
|||
|
('Ответственный', InputMethod.combo_box),
|
|||
|
('Ответственное подразделение', InputMethod.combo_box),
|
|||
|
('Ответственная редакция', InputMethod.combo_box),
|
|||
|
('Срок исполнения', InputMethod.date_picker),
|
|||
|
('Источник термина', InputMethod.combo_dialog),
|
|||
|
('Текст из ЭВ БРЭ', InputMethod.bool_toggle),
|
|||
|
('Отображать на главной', InputMethod.bool_toggle),
|
|||
|
('Обобщающая статья', InputMethod.bool_toggle),
|
|||
|
('Период актуализации', InputMethod.combo_dialog_simple_list),
|
|||
|
('Возрастное ограничение', InputMethod.combo_dialog_simple_list),
|
|||
|
('Приоритет', InputMethod.combo_box),
|
|||
|
('Тип статьи', InputMethod.combo_dialog_simple_list),
|
|||
|
('Биржа', InputMethod.date_picker),
|
|||
|
('Срок сдачи в ЕЭС 1', InputMethod.date_picker),
|
|||
|
('Биржа инструментов', InputMethod.date_picker),
|
|||
|
('Срок сдачи в ЕЭС 2', InputMethod.date_picker),
|
|||
|
('Эксперт', InputMethod.combo_box),
|
|||
|
('Номер договора', InputMethod.combo_box),
|
|||
|
('Комментарий', InputMethod.text_area),
|
|||
|
('Автор (на портале)', InputMethod.combo_box),
|
|||
|
|
|||
|
('ID задачи', InputMethod.read_only),
|
|||
|
('Название контента в базе', InputMethod.read_only),
|
|||
|
]
|
|||
|
|
|||
|
|
|||
|
@unique
|
|||
|
class FieldType(IntEnum):
|
|||
|
'''Поля ввода'''
|
|||
|
task_type = 0
|
|||
|
status = 1
|
|||
|
task_name = 2
|
|||
|
content_name = 3
|
|||
|
change_score = 4
|
|||
|
biblio_name = 5
|
|||
|
definition = 6
|
|||
|
is_immutable = 7
|
|||
|
object_type = 8
|
|||
|
markers = 9
|
|||
|
tags = 10
|
|||
|
supervisor = 11
|
|||
|
executor = 12
|
|||
|
task_manager = 13
|
|||
|
responsible = 14
|
|||
|
department = 15
|
|||
|
editorial = 16
|
|||
|
date_target = 17
|
|||
|
source = 18
|
|||
|
electron_bre = 19
|
|||
|
main_page = 20
|
|||
|
is_general = 21
|
|||
|
actualize_period = 22
|
|||
|
age_restriction = 23
|
|||
|
priority = 24
|
|||
|
article_type = 25
|
|||
|
date_exchange = 26
|
|||
|
date_ees1 = 27
|
|||
|
date_ex_tools = 28
|
|||
|
date_ees2 = 29
|
|||
|
expert = 30
|
|||
|
contract = 31
|
|||
|
comment = 32
|
|||
|
author = 33
|
|||
|
|
|||
|
task_id = 34
|
|||
|
content_name_db = 35
|
|||
|
|
|||
|
skip = -1
|
|||
|
|
|||
|
def to_label(self) -> str:
|
|||
|
'''Get text label for input field'''
|
|||
|
return _FIELD_DATA[self.value][0]
|
|||
|
|
|||
|
def input_method(self) -> InputMethod:
|
|||
|
'''Get input method for field'''
|
|||
|
return _FIELD_DATA[self.value][1]
|
|||
|
|
|||
|
|
|||
|
_FILTER_DATA = [
|
|||
|
('FilterTask', 'Тип задачи'),
|
|||
|
('FilterDepartment', 'Ответственное подразделение'),
|
|||
|
('FilterStatus', 'Статус задачи'),
|
|||
|
('FilterResponsible', 'Ответственный за задачу'),
|
|||
|
('FilterSupervisor', 'Курирующий редактор'),
|
|||
|
('FilterExecutor', 'Исполнитель'),
|
|||
|
('FilterObserver', 'Наблюдатель'),
|
|||
|
('FilterDateCreatedBegin', 'Дата создания'),
|
|||
|
('FilterDateCreatedEnd', 'Дата создания'),
|
|||
|
('FilterDateTargetBegin', 'Срок исполнения'),
|
|||
|
('FilterDateTargetEnd', 'Срок исполнения')
|
|||
|
]
|
|||
|
|
|||
|
|
|||
|
@unique
|
|||
|
class FilterType(IntEnum):
|
|||
|
'''Параметры фильтрации'''
|
|||
|
task_type = 0
|
|||
|
department = 1
|
|||
|
status = 2
|
|||
|
responsible = 3
|
|||
|
supervisor = 4
|
|||
|
executor = 5
|
|||
|
observer = 6
|
|||
|
created_begin = 7
|
|||
|
created_end = 8
|
|||
|
target_begin = 9
|
|||
|
target_end = 10
|
|||
|
|
|||
|
def to_config(self) -> str:
|
|||
|
'''Get input method for field'''
|
|||
|
return _FILTER_DATA[self.value][0]
|
|||
|
|
|||
|
def to_label(self) -> str:
|
|||
|
'''Get input method for field'''
|
|||
|
return _FILTER_DATA[self.value][1]
|