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
59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
"""Сериализаторы формы Ф-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)
|