Загрузка данных
export_journal_model.py
from __future__ import annotations
from dataclasses import dataclass
from enum import Enum
from typing import Any, Dict, List, Optional
from constants.enums import ReplyStatus
class ColumnsSelection(Enum):
"""Список столбцов, которые необходимо отобразить"""
DATETIME = 'dateTime'
USER = 'user'
MAIN_PIPE_LINE = 'mainPipeline'
TECHNOLOGICAL_SECTION = 'technologicalSection'
TECHNOLOGICAL_OBJECT = 'technologicalObject'
CONTROL_POINT = 'controlPoint'
SIGNAL = 'signal'
EVENT = 'event'
VALUE = 'value'
TAG = 'tag'
class FieldName(Enum):
"""Название поля, по которому происходит фильтрация"""
MESSAGE_TYPE = 'messageType'
OBJECT_TYPE = 'objectType'
PRIORITY = 'priority'
class SortingParam(Enum):
"""Название столбца, по которому происходит сортировка"""
DATE_TIME = 'dateTime'
class SortingType(Enum):
"""Тип сортировки (по возрастанию, по убыванию)"""
ASCENDING = 'ascending'
DESCENDING = 'descending'
@dataclass
class ExportJournalRequest:
"""Метод позволяет сформировать журнал."""
# Список столбцов, которые необходимо отобразить.
columnsSelection: Dict[str, Any]
# Фильтрация
filtering: Optional[Dict[str, Any]] = None
# Период времени, за который надо отобразить сообщения. Для архивного журнала.
periodTime: Optional[Dict[str, Any]] = None
# Поиск сообщений
search: Optional[Dict[str, Any]] = None
# Сортировка по столбцам.
sorting: Optional[Dict[str, Any]] = None
# Информация о пользователе, который хочет сформировать файл.
user: Optional[Dict[str, Any]] = None
@dataclass
class Filtering:
"""Фильтрация по выбранному полю"""
# Название поля, по которому происходит фильтрация
fieldName: FieldName
# Критерии фильтрации.
filterCriteria: List[Dict[str, Any]]
@dataclass
class PeriodTime:
"""Период отображения архивного журнала."""
# Время конца отображения сообщений.
end: Optional[float] = None
# Время начала отображения сообщений.
start: Optional[float] = None
@dataclass
class ReadyForUploadingFiles:
"""Сообщение о том, что файл сформирован и готов к скачиванию."""
replyStatus: ReplyStatus
content: Optional[UploadingFilesInfoReply] = None
replyErrors: Optional[ReplyErrors] = None
@dataclass
class ReplyErrors:
# Причина ошибки
reason: str
# Тип ошибки
errorType: Optional[str] = None
# Место возникновения ошибки
location: Optional[str] = None
@dataclass
class Search:
"""Поиск сообщений."""
# Строка, которая ищется в сообщении.
query: Optional[str] = None
@dataclass
class Sorting:
"""Сортировка по выбранному столбцу."""
# Название столбца, по которому происходит сортировка
sortingParam: SortingParam
# Тип сортировки (по возрастанию, по убыванию)
sortingType: SortingType
@dataclass
class UploadingFilesInfo:
"""Информация о сформированном файле."""
# Наименование файла
filesName: Optional[str] = None
# Время формирования файла.
time: Optional[float] = None
@dataclass
class UploadingFilesInfoReply:
"""Информация передеваемая по сформированным файлам"""
items: Optional[UploadingFilesInfo] = None
@dataclass
class User:
"""Сортировка по выбранному столбцу."""
# Идентификатор пользователя
id: Optional[int] = None
# ФИО пользователя
name: Optional[str] = None
@dataclass
class ExportJournalRequestMessage:
"""Метод позволяет сформировать журнал."""
payload: ExportJournalRequest
@dataclass
class ReadyForUploadingFilesMessage:
"""Сообщение о том, что файл сформирован и готов к скачиванию."""
payload: ReadyForUploadingFiles