Add initial implementations for forms and organization apps with serializers, factories, and admin configurations
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 5m5s
CI/CD Pipeline / Run Tests (push) Failing after 5m5s
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-02-17 09:26:08 +01:00
parent fd2adf9ab4
commit 8ed3e1175c
119 changed files with 9091 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
"""Сериализаторы формы Ф-6."""
from apps.form_6.models import FormF6Record
from apps.organization.serializers import OrganizationSerializer
from rest_framework import serializers
class FormF6RecordSerializer(serializers.ModelSerializer):
organization = OrganizationSerializer(read_only=True)
class Meta:
model = FormF6Record
fields = "__all__"
read_only_fields = ["id", "created_at", "updated_at"]
class FormF6RecordListSerializer(serializers.ModelSerializer):
organization_name = serializers.CharField(source="organization.name", read_only=True)
organization_inn = serializers.CharField(source="organization.inn", read_only=True)
class Meta:
model = FormF6Record
fields = [
"id", "organization_name", "organization_inn", "load_batch",
"row_code", "category", "total_equipment", "physical_wear_percent",
"created_at",
]
class FormF6UploadSerializer(serializers.Serializer):
file = serializers.FileField(help_text="Excel файл формы Ф-6 (.xlsx)")
def validate_file(self, value):
if not value.name.endswith((".xlsx", ".xls")):
raise serializers.ValidationError("Неподдерживаемый формат файла")
if value.size > 50 * 1024 * 1024:
raise serializers.ValidationError("Размер файла превышает 50MB")
return value
class FieldErrorSerializer(serializers.Serializer):
field = serializers.CharField()
message = serializers.CharField()
class RowValidationErrorSerializer(serializers.Serializer):
row = serializers.IntegerField()
inn = serializers.CharField(allow_null=True)
kpp = serializers.CharField(allow_null=True)
organization_name = serializers.CharField(allow_null=True)
errors = FieldErrorSerializer(many=True)
class FormF6ParseResultSerializer(serializers.Serializer):
batch_id = serializers.IntegerField()
loaded_count = serializers.IntegerField()
skipped_count = serializers.IntegerField()
errors = RowValidationErrorSerializer(many=True)