accounts/apps/transactions/serializers.py
2019-12-13 20:30:18 +03:30

43 lines
1.3 KiB
Python
Executable file

from django.db.transaction import atomic
from rest_framework import serializers
from apps.users.serializers import PublicUserSerializer
from .models import Transaction
class TransactionSerializer(serializers.ModelSerializer):
payer = PublicUserSerializer(required=False)
payee = PublicUserSerializer(required=False, read_only=True)
# application_id = serializers.IntegerField(required=False, read_only=True)
class Meta:
model = Transaction
fields = ('payer',
'payee',
"create",
"state",
"code",
'amount',
'delay',
'last_update',
'detail_id',
'application_id'
)
read_only_fields = ['last_update', 'code', 'state', 'create', 'detail_id', 'application_id']
def create(self, validated_data):
payer = validated_data.get('payer')
request = self.context.get('request')
user = request.user if request else payer
if user == payer:
with atomic():
transaction = Transaction.objects.create_transaction(**validated_data)
transaction.pay()
else:
transaction = Transaction.objects.create_transaction(**validated_data)
return transaction