def account_detail(request, id): try: account = Account.objects.get(pk=id) except Account.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': account_serializer = AccountSerializer(account) return Response(account_serializer.data) elif request.method == 'PUT': account_serializer = AccountSerializer(account, data=request.data) if account_serializer.validate_balance( ) and account_serializer.is_valid(): account_serializer.save() return Response(account_serializer.data) return Response(account_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': account.delete() return Response(status=status.HTTP_204_NO_CONTENT) elif request.method == 'PATCH': account_serializer = AccountSerializer(account, data=request.data, partial=True) saldo = account.__getattribute__('balance') - request.data['balance'] print(saldo) print(account.__getattribute__('balance')) print(request.data['balance']) if saldo > 0: if account_serializer.is_valid(): account_serializer.validated_data account_serializer.data['balance'] = saldo print(account_serializer.validated_data) account_serializer.save() # if account_serializer.is_valid(): # account_serializer.save() print('entrou') return Response(status=status.HTTP_202_ACCEPTED) return Response(account_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif saldo == 0: raise serializers.ValidationError("O Saldo não pode ser zerado") elif saldo < 0: raise serializers.ValidationError("Saldo insuficiente")
def account_list(request): if request.method == 'GET': accounts = Account.objects.all() accounts_serializer = AccountSerializer(accounts, many=True) return Response(accounts_serializer.data) elif request.method == 'POST': account_serializer = AccountSerializer(data=request.data) if account_serializer.validate_balance( ) and account_serializer.is_valid( ) and account_serializer.validate_data(): account_serializer.save() return Response(account_serializer.data, status=status.HTTP_201_CREATED) return Response(account_serializer.errors, status=status.HTTP_400_BAD_REQUEST)