first push
This commit is contained in:
133
Wallet/views.py
Normal file
133
Wallet/views.py
Normal file
@@ -0,0 +1,133 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
from Wallet.models import Transaction, Wallet
|
||||
from rest_framework import viewsets, generics, status, permissions
|
||||
|
||||
# Create your views here.
|
||||
from rest_framework.response import Response
|
||||
from django.forms.models import model_to_dict
|
||||
|
||||
from Wallet.serializers.customer import TransactionSerializer, WalletSerializer
|
||||
from oauth2_provider.contrib.rest_framework import (
|
||||
TokenHasReadWriteScope,
|
||||
OAuth2Authentication,
|
||||
)
|
||||
from oauth2_provider.models import AccessToken
|
||||
|
||||
|
||||
class WalletViewSet(viewsets.ModelViewSet):
|
||||
queryset = Wallet.objects.all()
|
||||
serializer_class = WalletSerializer
|
||||
permission_classes = [TokenHasReadWriteScope]
|
||||
lookup_field = 'key'
|
||||
lookup_url_kwarg = 'key'
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
if "key" in request.GET:
|
||||
wallet_obj = Wallet.objects.get(key__exact=request.GET["key"])
|
||||
queryset = wallet_obj.category.all()
|
||||
products = [x for x in queryset]
|
||||
serializer = WalletSerializer(products, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
if "type" in request.GET:
|
||||
wallet_obj = Wallet.objects.filter(user_id=request.user.id)
|
||||
query = [x for x in wallet_obj]
|
||||
serializer = WalletSerializer(query, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
else:
|
||||
queryset = Wallet.objects.all()
|
||||
serializer = WalletSerializer(queryset, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
wallet = Wallet.objects.get(key__exact=request.data["key"])
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
w = serializer.create(validated_data=request.data)
|
||||
|
||||
w.user = request.user
|
||||
w.save()
|
||||
|
||||
w_s = self.serializer_class(w)
|
||||
return Response(w_s.data, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors)
|
||||
|
||||
def retrieve(self, request, key=None, *args, **kwargs):
|
||||
queryset = self.get_object()
|
||||
serializer = self.serializer_class(queryset)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def update(self, request, pk=None, *args, **kwargs):
|
||||
queryset = self.get_object()
|
||||
|
||||
queryset.save()
|
||||
serializer = self.serializer_class(queryset)
|
||||
serializer.update(instance=queryset, validated_data=request.data)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def partial_update(self, request, pk=None, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
queryset = self.get_object()
|
||||
queryset.trash = True
|
||||
queryset.save()
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class TransactionViewSet(viewsets.ModelViewSet):
|
||||
queryset = Transaction.objects.all()
|
||||
serializer_class = TransactionSerializer
|
||||
permission_classes = [TokenHasReadWriteScope]
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
if "key" in request.GET:
|
||||
transaction_obj = Transaction.objects.get(key__exact=request.GET["key"])
|
||||
queryset = transaction_obj.category.all()
|
||||
transactions = [x for x in queryset]
|
||||
serializer = self.serializer_class(transactions, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
if "type" in request.GET:
|
||||
transactions_obj = Transaction.objects.filter(user_id=request.user.id)
|
||||
query = [x for x in transactions_obj]
|
||||
serializer = self.serializer_class(query, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
else:
|
||||
queryset = Wallet.objects.all()
|
||||
serializer = self.serializer_class(queryset, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
transaction_obj = Transaction.objects.get(key__exact=request.data["key"])
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
t = serializer.create(validated_data=request.data)
|
||||
|
||||
t.user = request.user
|
||||
t.save()
|
||||
|
||||
t_s = self.serializer_class(t)
|
||||
return Response(t_s.data, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors)
|
||||
|
||||
def retrieve(self, request, pk=None, *args, **kwargs):
|
||||
queryset = Transaction.objects.get(key__exact=request.GET["key"])
|
||||
serializer = self.serializer_class(queryset)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def update(self, request, pk=None, *args, **kwargs):
|
||||
queryset = Transaction.objects.get(key__exact=request.GET["key"])
|
||||
|
||||
queryset.save()
|
||||
serializer = self.serializer_class(queryset)
|
||||
serializer.update(instance=queryset, validated_data=request.data)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def partial_update(self, request, pk=None, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
queryset = Transaction.objects.get(key__exact=request.GET["wallet_id"])
|
||||
queryset.trash = True
|
||||
queryset.save()
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
Reference in New Issue
Block a user