def create(self, request): """ Bulk creation create multiple transactions at once """ serializer = TransactionSerializer(many=True, data=request.data) serializer.is_valid(raise_exception=True) transactions = serializer.save() return Response( TransactionSerializer(transactions, many=True).data, status=status.HTTP_201_CREATED, )
def post(self, request, folio_android, format=None): transaction = self.get_object(folio_android) serializer = TransactionSerializer(transaction, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def create(self, request, format=None): serializer = TransactionSerializer(data=request.data, context={'request': request}) if serializer.is_valid(): self.save_transaction(serializer) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def create(self, request, *args, **kwargs): data = request.data transaction = TransactionSerializer(data=data) if transaction.is_valid(): try: transaction.save() except ValidationError: return Response({'error': 'not enough bts'}, status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_201_CREATED) else: return Response(status=status.HTTP_400_BAD_REQUEST)
def validate(cls, data): """ Validate transaction data :param data: json, dict, xml :return: dict with validation result and errors """ if cls.is_valid_json(data): data = json.loads(data) if cls.is_valid_xml(data): data = XMLParser().parse(data) serializer_data = TransactionSerializer(data=data) return { 'is_valid': serializer_data.is_valid(), 'errors': serializer_data.errors }
def make_transaction(request): user = UserSerializer(User.objects.get(username=request.user)) balance = UserBalance.objects.get(user=user.data['id']) if request.data['transaction_type'] == 1 and balance.balance < request.data[ 'price'] * request.data['amount']: return Response({"details": "Your balance is not enough."}, status=status.HTTP_400_BAD_REQUEST) newBalance = balance.balance if request.data['transaction_type'] == 1: newBalance -= request.data['price'] * request.data['amount'] else: newBalance += request.data['price'] * request.data['amount'] balance.balance = newBalance balance.save() serializer = TransactionSerializer(data=request.data) if serializer.is_valid(): serializer.save(owner=request.user) return JsonResponse(serializer.data, status=status.HTTP_201_CREATED) return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): serializer = TransactionSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def serialize_dict(obj): serializer = TransactionSerializer(data=obj) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data, status=201)
def test_serializer_all_fields_validates(self): serializer = TransactionSerializer(data=self.get_full_data(), context=self.serializer_context) self.assertTrue(serializer.is_valid(raise_exception=True))
def test_serializer_only_required_fields_validates(self): serializer = TransactionSerializer(data=self.serializer_data, context=self.serializer_context) self.assertTrue(serializer.is_valid(raise_exception=True))