add: add order apis for admin panel

This commit is contained in:
behruz-dev
2025-09-03 16:33:05 +05:00
parent c040d6f4c6
commit 1befa6625f
6 changed files with 64 additions and 11 deletions

View File

@@ -4,8 +4,18 @@ from core.apps.orders.models import Order
class OrderSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField(method_name='get_user')
class Meta:
model = Order
fields = [
'id', 'order_number', 'total_price', 'user'
]
'id', 'order_number', 'status', 'total_price', 'user'
]
def get_user(self, obj):
return {
'id': obj.user.id,
'first_name': obj.user.first_name,
'last_name': obj.user.last_name,
'username': obj.user.username
}

View File

@@ -5,6 +5,7 @@ from core.apps.admin_panel.views import banner as banner_views
from core.apps.admin_panel.views import unity as unity_views
from core.apps.admin_panel.views import category as category_views
from core.apps.admin_panel.views import product as product_views
from core.apps.admin_panel.views import order as order_views
urlpatterns = [
@@ -54,4 +55,9 @@ urlpatterns = [
path('<uuid:id>/', product_views.ProductDetailApiView.as_view()),
]
)),
path('order/', include(
[
path('list/', order_views.OrderListApiView.as_view()),
]
))
]

View File

@@ -0,0 +1,18 @@
from rest_framework import generics, views, status
from rest_framework.permissions import IsAdminUser
from core.apps.shared.mixins.response import ResponseMixin
from core.apps.admin_panel.serializers.order import OrderSerializer
from core.apps.orders.models import Order
class OrderListApiView(generics.GenericAPIView):
serializer_class = OrderSerializer
queryset = Order.objects.select_related('user')
permission_classes = [IsAdminUser]
def get(self, request):
page = self.paginate_queryset(self.queryset)
if page is not None:
serializer = self.serializer_class(page, many=True)
return self.get_paginated_response(serializer.data)