Files
eimzo/core/apps/contracts/serializers/contract.py
2025-07-16 15:24:29 +05:00

39 lines
1.6 KiB
Python

from django.db import transaction
from rest_framework import serializers
from core.apps.contracts.models.contract import Contract
from core.apps.contracts.serializers.contract_side import ContractSideCreateSerializer
class ContractCreateSerializer(serializers.Serializer):
file = serializers.FileField(max_length=None, allow_empty_file=False)
contract_number = serializers.IntegerField()
name = serializers.CharField()
sides = serializers.ChoiceField(choices=('two_or_more', 'customer_only', 'only_company'))
face_id = serializers.BooleanField()
attach_file = serializers.BooleanField()
add_folder = serializers.BooleanField()
add_notification = serializers.BooleanField()
def create(self, validated_data):
with transaction.atomic():
contract = Contract.objects.create(
file=validated_data.pop('file'),
contract_number=validated_data.pop('contract_number'),
name=validated_data.pop('name'),
sides=validated_data.pop('sides'),
face_id=validated_data.pop('face_id'),
attach_file=validated_data.pop('attach_file'),
add_folder=validated_data.pop('add_folder'),
add_notification=validated_data.pop('add_notification'),
)
return contract.id
class ContractListSerializer(serializers.ModelSerializer):
class Meta:
model = Contract
fields = [
'id', 'name', 'file', 'contract_number', 'sides', 'face_id', 'add_folder', 'attach_file', 'add_notification', 'created_at'
]