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
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:
58
src/apps/form_6/serializers.py
Normal file
58
src/apps/form_6/serializers.py
Normal 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)
|
||||
Reference in New Issue
Block a user