feat(forms): unify F2-F6 upload contracts and add shared serializers
This commit is contained in:
@@ -8,6 +8,11 @@ API формы Ф-2.
|
||||
|
||||
import logging
|
||||
|
||||
from apps.core.upload_contracts import (
|
||||
build_upload_error_response,
|
||||
build_upload_success_payload,
|
||||
build_upload_validation_response,
|
||||
)
|
||||
from apps.core.viewsets import ReadOnlyViewSet
|
||||
from apps.form_2.models import FormF2Record
|
||||
from apps.form_2.serializers import (
|
||||
@@ -42,7 +47,9 @@ class FormF2UploadView(APIView):
|
||||
def post(self, request):
|
||||
"""Загрузка и обработка файла."""
|
||||
serializer = FormF2UploadSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
if not serializer.is_valid():
|
||||
return build_upload_validation_response(serializer.errors)
|
||||
|
||||
file = serializer.validated_data["file"]
|
||||
report_year = serializer.validated_data["report_year"]
|
||||
@@ -59,11 +66,13 @@ class FormF2UploadView(APIView):
|
||||
)
|
||||
|
||||
return Response(
|
||||
{
|
||||
"success": True,
|
||||
"message": "Файл поставлен в очередь на обработку",
|
||||
"task_id": task.id,
|
||||
},
|
||||
build_upload_success_payload(
|
||||
form="f2",
|
||||
report_year=report_year,
|
||||
report_quarter=report_quarter,
|
||||
status="queued",
|
||||
job_id=task.id,
|
||||
),
|
||||
status=status.HTTP_202_ACCEPTED,
|
||||
)
|
||||
|
||||
@@ -77,20 +86,21 @@ class FormF2UploadView(APIView):
|
||||
result_serializer = FormF2ParseResultSerializer(result)
|
||||
|
||||
return Response(
|
||||
{
|
||||
"success": True,
|
||||
"data": result_serializer.data,
|
||||
},
|
||||
build_upload_success_payload(
|
||||
form="f2",
|
||||
report_year=report_year,
|
||||
report_quarter=report_quarter,
|
||||
status="done",
|
||||
result=result_serializer.data,
|
||||
),
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception("Ошибка обработки файла Ф-2")
|
||||
return Response(
|
||||
{
|
||||
"success": False,
|
||||
"error": str(e),
|
||||
},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
return build_upload_error_response(
|
||||
error_code="processing_error",
|
||||
error_message=str(e),
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user