feat(parsers): support FNS zip uploads in admin
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
Все сериализаторы read-only, так как данные загружаются только через парсеры.
|
||||
"""
|
||||
|
||||
from apps.parsers.fns_upload import FNS_XLSX_FILENAME_RE
|
||||
from apps.parsers.models import (
|
||||
FinancialReport,
|
||||
FinancialReportLine,
|
||||
@@ -269,12 +270,8 @@ class FNSFileUploadSerializer(serializers.Serializer):
|
||||
|
||||
def validate_files(self, value):
|
||||
"""Валидация файлов."""
|
||||
import re
|
||||
|
||||
pattern = re.compile(r"^fin_\d+_\d{13,15}\.xlsx$")
|
||||
|
||||
for file in value:
|
||||
if not pattern.match(file.name):
|
||||
if not FNS_XLSX_FILENAME_RE.match(file.name):
|
||||
raise serializers.ValidationError(
|
||||
f"Неверный формат имени файла: {file.name}. "
|
||||
"Ожидается: fin_{{id}}_{{ogrn}}.xlsx"
|
||||
@@ -283,6 +280,17 @@ class FNSFileUploadSerializer(serializers.Serializer):
|
||||
return value
|
||||
|
||||
|
||||
class FNSZipUploadSerializer(serializers.Serializer):
|
||||
"""Сериализатор для загрузки ZIP архива с FNS Excel файлами."""
|
||||
|
||||
file = serializers.FileField(help_text="ZIP архив с файлами fin_*.xlsx")
|
||||
|
||||
def validate_file(self, value):
|
||||
if not value.name.lower().endswith(".zip"):
|
||||
raise serializers.ValidationError("Поддерживаются только ZIP архивы")
|
||||
return value
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Служебные модели
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user