contract signature part is done
This commit is contained in:
@@ -47,5 +47,5 @@ class ContractDetailSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Contract
|
||||
fields = [
|
||||
'id', 'name', 'file', 'contract_number', 'contract_sides',
|
||||
'id', 'name', 'file', 'status', 'contract_number', 'contract_sides',
|
||||
]
|
||||
@@ -2,8 +2,9 @@ from django.contrib.auth import get_user_model
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.apps.contracts.models.contract import ContractSide, Contract
|
||||
from core.apps.contracts.models.contract import ContractSide, Contract, ContractSignature
|
||||
from core.apps.contracts.enums.contract_side import ROLE
|
||||
from core.apps.contracts.serializers.contract_signature import ContractSignatureListSerializer
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@@ -25,8 +26,14 @@ class ContractSideCreateSerializer(serializers.Serializer):
|
||||
|
||||
|
||||
class ContractSideListSerializer(serializers.ModelSerializer):
|
||||
contract_signature = serializers.SerializerMethodField(method_name='get_contract_signature')
|
||||
|
||||
class Meta:
|
||||
model = ContractSide
|
||||
fields = [
|
||||
'id', 'full_name', 'user'
|
||||
]
|
||||
'id', 'full_name', 'user', 'contract_signature'
|
||||
]
|
||||
|
||||
def get_contract_signature(self, obj):
|
||||
contract_signature = obj.contract_signatures
|
||||
return ContractSignatureListSerializer(contract_signature).data
|
||||
34
core/apps/contracts/serializers/contract_signature.py
Normal file
34
core/apps/contracts/serializers/contract_signature.py
Normal 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
|
||||
Reference in New Issue
Block a user