contract signature part is done

This commit is contained in:
behruz-dev
2025-07-17 14:49:06 +05:00
parent 4bde93f3ed
commit 7102cdbcfd
18 changed files with 209 additions and 26 deletions

View File

@@ -0,0 +1,34 @@
from django.utils import timezone
from rest_framework import serializers
from core.apps.contracts.models.contract import ContractSignature, ContractSignatureCode
class ContractSignatureListSerializer(serializers.ModelSerializer):
class Meta:
model = ContractSignature
fields = [
'id', 'status', 'signature_type', 'is_signature'
]
class ContractSignatureSerializer(serializers.Serializer):
code = serializers.IntegerField()
signature_id = serializers.UUIDField()
def validate(self, data):
user = self.context.get('user')
signature = ContractSignature.objects.filter(id=data.get('signature_id')).first()
if not signature:
raise serializers.ValidationError({"detail": "contract signature not found"})
if signature.contract_side.user != user:
raise serializers.ValidationError({'detail': 'this is not your code'})
signature_code = ContractSignatureCode.objects.filter(signature=signature, code=data.get('code')).first()
if not signature_code:
raise serializers.ValidationError({'detail': 'invalid code'})
if signature_code.expiration_time < timezone.now():
raise serializers.ValidationError({"detail": 'code is expired'})
data['contract'] = signature.contract_side.contract
data['contract_signature'] = signature
return data