first commit
This commit is contained in:
commit
3e4574dcdd
163 files changed
+3559
No files matched your search
@@ -0,0 +1,106 @@
|
||||
from rest_framework import serializers
|
||||
from apps.cuser.models import CUser as CUserModel
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.generics import ListAPIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from utils.tools.inline_serializer import inline_serializer
|
||||
from utils.standard_pagination import StandardPagination
|
||||
from utils.order_pagination import OrderViewPagination
|
||||
from apps.order.models import Order as OrderModel
|
||||
from apps.op_panel.selector import get_orders_list, get_order
|
||||
from apps.op_panel.services import update_order
|
||||
from rest_framework import status
|
||||
|
||||
|
||||
class RetrieveOrderApiView(APIView):
|
||||
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
class OutputSerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField()
|
||||
name = serializers.CharField()
|
||||
status = serializers.CharField()
|
||||
# get status choices display
|
||||
status_text = serializers.CharField(source='get_status_display')
|
||||
code = serializers.CharField()
|
||||
desc = serializers.CharField()
|
||||
cuser_mojri = inline_serializer(many=False, fields={
|
||||
'id': serializers.IntegerField(),
|
||||
'name_family': serializers.CharField(),
|
||||
'user_profile': inline_serializer(many=False, fields={
|
||||
'address': serializers.CharField()
|
||||
})
|
||||
})
|
||||
|
||||
def get(self, request, id: int):
|
||||
order = get_order(id)
|
||||
serializer = self.OutputSerializer(order)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class UpdateOrderApiView(APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
class InputSerializer(serializers.Serializer):
|
||||
code = serializers.CharField()
|
||||
desc = serializers.CharField()
|
||||
|
||||
def patch(self, request, id: int):
|
||||
serializer = self.InputSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
code = serializer.validated_data['code']
|
||||
desc = serializer.validated_data['desc']
|
||||
|
||||
update_order(id, 'approve', code, desc)
|
||||
|
||||
return Response({'id': id}, status=status.HTTP_200_OK)
|
||||
|
||||
class OrderListView(ListAPIView):
|
||||
|
||||
class OutputSerializer(serializers.ModelSerializer):
|
||||
city = serializers.SerializerMethodField()
|
||||
ostan = serializers.SerializerMethodField()
|
||||
name_family = serializers.SerializerMethodField()
|
||||
mojri_id = serializers.SerializerMethodField()
|
||||
mobile = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = ('id', 'mojri_id', 'mobile' , 'city', 'name', 'ostan', 'name_family', 'desc', 'status')
|
||||
|
||||
def get_city(self, obj):
|
||||
if obj.cuser_mojri.user_profile.city is None:
|
||||
return ''
|
||||
return obj.cuser_mojri.user_profile.city.name
|
||||
|
||||
def get_ostan(self, obj):
|
||||
if obj.cuser_mojri.user_profile.city is None:
|
||||
return ''
|
||||
return obj.cuser_mojri.user_profile.city.ostan.name
|
||||
|
||||
def get_name_family(self, obj):
|
||||
if obj.cuser_mojri is None:
|
||||
return ''
|
||||
return obj.cuser_mojri.name_family
|
||||
|
||||
def get_mojri_id(self, obj):
|
||||
if obj.cuser_mojri is None:
|
||||
return ''
|
||||
return obj.cuser_mojri.id
|
||||
|
||||
def get_mobile(self, obj):
|
||||
if obj.cuser_mojri is None:
|
||||
return ''
|
||||
return obj.cuser_mojri.mobile
|
||||
|
||||
permission_classes = (IsAuthenticated,)
|
||||
pagination_class = OrderViewPagination
|
||||
serializer_class = OutputSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
rq_status = self.request.query_params.get('status')
|
||||
orders = get_orders_list(status=rq_status)
|
||||
return orders
|
||||
|
||||
Reference in new issue
Block a user