Add initial implementations for forms and organization apps with serializers, factories, and admin configurations
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 45s
CI/CD Pipeline / Code Quality Checks (push) Failing after 48s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 45s
CI/CD Pipeline / Code Quality Checks (push) Failing after 48s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
import logging
|
||||
|
||||
from apps.core.viewsets import BaseViewSet
|
||||
from apps.core.viewsets import ReadOnlyViewSet
|
||||
from apps.form_4.models import FormF4Record
|
||||
from apps.form_4.serializers import (
|
||||
FormF4ParseResultSerializer,
|
||||
@@ -10,10 +10,11 @@ from apps.form_4.serializers import (
|
||||
FormF4RecordSerializer,
|
||||
FormF4UploadSerializer,
|
||||
)
|
||||
from apps.form_4.services import FormF4Service, parse_form_f4_file
|
||||
from apps.form_4.services import parse_form_f4_file
|
||||
from apps.form_4.tasks import process_form_f4_file
|
||||
from rest_framework import status
|
||||
from rest_framework.parsers import MultiPartParser
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
||||
@@ -28,31 +29,64 @@ class FormF4UploadView(APIView):
|
||||
serializer = FormF4UploadSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
file = serializer.validated_data["file"]
|
||||
report_year = serializer.validated_data["report_year"]
|
||||
report_quarter = serializer.validated_data.get("report_quarter")
|
||||
|
||||
if file.size > BACKGROUND_THRESHOLD:
|
||||
task = process_form_f4_file.delay(file.read(), file.name)
|
||||
task = process_form_f4_file.delay(
|
||||
file.read(),
|
||||
file.name,
|
||||
report_year,
|
||||
report_quarter,
|
||||
)
|
||||
return Response(
|
||||
{"success": True, "message": "Файл поставлен в очередь", "task_id": task.id},
|
||||
{
|
||||
"success": True,
|
||||
"message": "Файл поставлен в очередь",
|
||||
"task_id": task.id,
|
||||
},
|
||||
status=status.HTTP_202_ACCEPTED,
|
||||
)
|
||||
|
||||
try:
|
||||
result = parse_form_f4_file(file)
|
||||
return Response({"success": True, "data": FormF4ParseResultSerializer(result).data})
|
||||
result = parse_form_f4_file(
|
||||
file,
|
||||
report_year=report_year,
|
||||
report_quarter=report_quarter,
|
||||
)
|
||||
return Response(
|
||||
{"success": True, "data": FormF4ParseResultSerializer(result).data}
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception("Ошибка обработки файла Ф-4")
|
||||
return Response({"success": False, "error": str(e)}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(
|
||||
{"success": False, "error": str(e)}, status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
|
||||
class FormF4RecordViewSet(BaseViewSet):
|
||||
queryset = FormF4Record.objects.select_related("organization").all()
|
||||
class FormF4RecordViewSet(ReadOnlyViewSet[FormF4Record]):
|
||||
queryset = FormF4Record.objects.select_related("organization").filter(
|
||||
is_active_version=True
|
||||
)
|
||||
serializer_class = FormF4RecordSerializer
|
||||
service_class = FormF4Service
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_serializer_class(self):
|
||||
return FormF4RecordListSerializer if self.action == "list" else FormF4RecordSerializer
|
||||
return (
|
||||
FormF4RecordListSerializer
|
||||
if self.action == "list"
|
||||
else FormF4RecordSerializer
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
qs = super().get_queryset()
|
||||
batch_id = self.request.query_params.get("batch_id")
|
||||
return qs.filter(load_batch=batch_id) if batch_id else qs
|
||||
report_year = self.request.query_params.get("report_year")
|
||||
report_quarter = self.request.query_params.get("report_quarter")
|
||||
if batch_id:
|
||||
qs = qs.filter(load_batch=batch_id)
|
||||
if report_year:
|
||||
qs = qs.filter(report_year=report_year)
|
||||
if report_quarter:
|
||||
qs = qs.filter(report_quarter=report_quarter)
|
||||
return qs
|
||||
|
||||
Reference in New Issue
Block a user