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

This commit is contained in:
2026-03-28 18:23:06 +01:00
parent 8ed3e1175c
commit 345b1d0cc8
201 changed files with 15097 additions and 6691 deletions

View File

@@ -2,7 +2,7 @@
import logging
from apps.core.viewsets import BaseViewSet
from apps.core.viewsets import ReadOnlyViewSet
from apps.form_6.models import FormF6Record
from apps.form_6.serializers import (
FormF6ParseResultSerializer,
@@ -10,10 +10,11 @@ from apps.form_6.serializers import (
FormF6RecordSerializer,
FormF6UploadSerializer,
)
from apps.form_6.services import FormF6Service, parse_form_f6_file
from apps.form_6.services import parse_form_f6_file
from apps.form_6.tasks import process_form_f6_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 FormF6UploadView(APIView):
serializer = FormF6UploadSerializer(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_f6_file.delay(file.read(), file.name)
task = process_form_f6_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_f6_file(file)
return Response({"success": True, "data": FormF6ParseResultSerializer(result).data})
result = parse_form_f6_file(
file,
report_year=report_year,
report_quarter=report_quarter,
)
return Response(
{"success": True, "data": FormF6ParseResultSerializer(result).data}
)
except Exception as e:
logger.exception("Ошибка обработки файла Ф-6")
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 FormF6RecordViewSet(BaseViewSet):
queryset = FormF6Record.objects.select_related("organization").all()
class FormF6RecordViewSet(ReadOnlyViewSet[FormF6Record]):
queryset = FormF6Record.objects.select_related("organization").filter(
is_active_version=True
)
serializer_class = FormF6RecordSerializer
service_class = FormF6Service
permission_classes = [IsAuthenticated]
def get_serializer_class(self):
return FormF6RecordListSerializer if self.action == "list" else FormF6RecordSerializer
return (
FormF6RecordListSerializer
if self.action == "list"
else FormF6RecordSerializer
)
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