89 lines
2.8 KiB
Python
89 lines
2.8 KiB
Python
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)
|
|
|
|
|
|
|
|
|
|
|
|
|