first commit
This commit is contained in:
commit
3e4574dcdd
163 files changed
+3559
No files matched your search
@@ -0,0 +1,88 @@
|
||||
from django.shortcuts import render
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.generics import ListAPIView
|
||||
from rest_framework import serializers
|
||||
from rest_framework import response
|
||||
from rest_framework import status
|
||||
from apps.order.models import Order as OrderModel
|
||||
from apps.order.services import create_order
|
||||
from apps.order.selector import retrieve_order
|
||||
from utils.tools.inline_serializer import inline_serializer
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from utils.standard_pagination import StandardPagination
|
||||
# Create your views here.
|
||||
|
||||
|
||||
class ListOrderApiView(ListAPIView):
|
||||
class OutputSerializer(serializers.ModelSerializer):
|
||||
|
||||
product = inline_serializer(many=False, fields={
|
||||
'id': serializers.IntegerField(),
|
||||
'desc': serializers.CharField(),
|
||||
'name': serializers.CharField(),
|
||||
'emtiyaz': serializers.IntegerField(),
|
||||
'price': serializers.IntegerField(),
|
||||
'image': serializers.ImageField(),
|
||||
})
|
||||
|
||||
status_text = serializers.CharField(source='get_status_display', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = '__all__'
|
||||
|
||||
permission_classes = (IsAuthenticated,)
|
||||
serializer_class = OutputSerializer
|
||||
pagination_class = StandardPagination
|
||||
|
||||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
return OrderModel.objects.filter(cuser_mojri=user)
|
||||
|
||||
|
||||
class RetrieveOrderApiView(APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
class OutputSerializer(serializers.ModelSerializer):
|
||||
|
||||
product = inline_serializer(many=False, fields={
|
||||
'id': serializers.IntegerField(),
|
||||
'desc': serializers.CharField(),
|
||||
'name': serializers.CharField(),
|
||||
'emtiyaz': serializers.IntegerField(),
|
||||
'price': serializers.IntegerField(),
|
||||
'image': serializers.ImageField(),
|
||||
})
|
||||
|
||||
status_text = serializers.CharField(source='get_status_display', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = '__all__'
|
||||
|
||||
def get(self, request, order_id):
|
||||
order = retrieve_order(order_id=order_id)
|
||||
serializer = self.OutputSerializer(order)
|
||||
return response.Response(data=serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class CreateOrderApiView(APIView):
|
||||
permission_classes = (IsAuthenticated, )
|
||||
|
||||
class InputSerializer(serializers.Serializer):
|
||||
product_id = serializers.IntegerField()
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.InputSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
user = request.user
|
||||
|
||||
order = create_order(**serializer.validated_data, cuser=user)
|
||||
|
||||
return response.Response(data={'order': order.id}, status=status.HTTP_201_CREATED)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user