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