/
MaxIs
/
savemoney
Обзор
Документация
Войти
/
MaxIs
/
savemoney
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
sm/api/serializers.py
76 строк
4 KB
zalma2006
добавлен flask для работы с selenium в отдельном сервисе, добавлены точки API, добавлена загрузка отчётов из источника, подробнее в HISTORY.md
15 мар 2026, 19:36
15 мар 2026, 19:36
ae3ea09
Код
Авторство
О чём код?
from pathlib import Path from django.core.files.uploadedfile import InMemoryUploadedFile from rest_framework import serializers from api.drf_cust_field import DDMMYYYYDateField from mfiles.models import Report from savemoney.models import Emitent, ResourcesEmitent, Resources, ReportType, EmitentReport class INNSerializer(serializers.Serializer): inn = serializers.CharField( required=True, max_length=Emitent._meta.get_field('emitent_inn').max_length, allow_null=Emitent._meta.get_field('emitent_inn').null, allow_blank=Emitent._meta.get_field('emitent_inn').blank, validators=Emitent._meta.get_field('emitent_inn').validators, ) class ReportSerializer(serializers.Serializer): """Проверка данных для отчёта""" current_report = serializers.BooleanField(required=True, allow_null=Report._meta.get_field('current_report').null, ) name = serializers.CharField(required=True, max_length=Report._meta.get_field('name').max_length, allow_null=Report._meta.get_field('name').null, allow_blank=Report._meta.get_field('name').blank, validators=Report._meta.get_field('name').validators) report_type = serializers.IntegerField(required=True, allow_null=ReportType._meta.get_field('num_type').validators, validators=ReportType._meta.get_field('num_type').validators) rep_year = serializers.IntegerField(required=True, allow_null=ReportType._meta.get_field('num_type').validators, validators=Report._meta.get_field('rep_year').validators) rep_period = serializers.CharField(required=False, max_length=Report._meta.get_field('rep_period').max_length, allow_null=Report._meta.get_field('rep_period').null, allow_blank=Report._meta.get_field('rep_period').blank, validators=Report._meta.get_field('rep_period').validators) approve_date = DDMMYYYYDateField(required=False, ) basis_date = DDMMYYYYDateField(required=False, ) loc_date = DDMMYYYYDateField(required=False, ) url_path = serializers.URLField(max_length=Report._meta.get_field('url_path').max_length, allow_null=Report._meta.get_field('url_path').null, allow_blank=Report._meta.get_field('url_path').blank, validators=Report._meta.get_field('url_path').validators, required=True) download_time_sec = serializers.FloatField() class FileSerializer(serializers.Serializer): """Проверка файла""" file = serializers.FileField(required=False) class ReportFileUploadSerializer(INNSerializer, FileSerializer, ReportSerializer): """Валидация файлов для отчётности эмитентов""" class ReportPathUploadSerializer(INNSerializer, ReportSerializer): """Валидация данных без файла, передача пути до файла""" filepath = serializers.CharField(max_length=Report._meta.get_field('filepath').max_length, required=False, allow_null=True, allow_blank=True, validators=Report._meta.get_field('filepath').validators, ) class AddResourcesEmitentSerializer(INNSerializer): """Проверка ResourcesEmitent""" source = serializers.URLField( max_length=Report._meta.get_field('url_path').max_length, validators=Report._meta.get_field('url_path').validators, allow_null=Report._meta.get_field('url_path').null, allow_blank=Report._meta.get_field('url_path').blank, ) source_sv = serializers.CharField(max_length=ResourcesEmitent._meta.get_field('source_sv').max_length, validators=ResourcesEmitent._meta.get_field('source_sv').validators, allow_null=ResourcesEmitent._meta.get_field('source_sv').null, allow_blank=ResourcesEmitent._meta.get_field('source_sv').blank,)