Files
eimzo/core/apps/contracts/views/contract_side.py
behruz-dev 5df85f1a85 change api
2025-08-13 12:41:30 +05:00

41 lines
1.9 KiB
Python

from django.db import transaction
from rest_framework import generics, status, parsers
from rest_framework.response import Response
from core.apps.contracts.serializers import contract_side as contract_side_serializer
from core.apps.contracts.models.contract import ContractSide, Contract
from core.apps.contracts.tasks.contract_side import create_contract_side
from core.apps.shared.utils.response import error_message, success_message
from core.apps.accounts.models import User
class ContractSideCreateApiView(generics.GenericAPIView):
serializer_class = contract_side_serializer.ContractSideListCreateSerializer
queryset = ContractSide.objects.all()
@transaction.atomic
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
try:
with transaction.atomic():
for side_data in serializer.validated_data['contract_side']:
user = User.objects.get(phone=side_data['phone'])
contract = Contract.objects.get(id=side_data['contract_id'])
ContractSide.objects.create(
full_name=side_data['full_name'],
indentification=side_data['indentification'],
position=side_data.get('position', ''),
has_indentification=side_data['has_indentification'],
user_role=side_data['user_role'],
# phone=side_data['phone'],
contract=contract,
user=user
)
return success_message("Contract side created", 201)
except Exception as e:
transaction.set_rollback(True)
return error_message(str(e), 400)
return error_message(serializer.errors, 400)