This commit is contained in:
behruz-dev
2025-12-01 16:40:41 +05:00
parent 4332c0826a
commit 046ec09849
5 changed files with 86 additions and 3 deletions

View File

@@ -0,0 +1,25 @@
# rest framework
from rest_framework import serializers
# orders
from core.apps.orders.models import Payment
class PaymentListSerializer(serializers.ModelSerializer):
employee_name = serializers.SerializerMethodField(method_name='get_employee_name')
factory = serializers.SerializerMethodField(method_name='get_factory')
class Meta:
model = Payment
fields = [
'id', 'employee_name', 'factory', 'price', 'created_at'
]
def get_employee_name(self, obj):
return obj.order.employee_name
def get_factory(self, obj):
return {
'id': obj.order.factory.id,
'name': obj.order.factory.name,
}

View File

@@ -27,6 +27,8 @@ from core.apps.dashboard.views.factory import FactoryViewSet
from core.apps.dashboard.views.tour_plan import TourPlanViewSet from core.apps.dashboard.views.tour_plan import TourPlanViewSet
# order # order
from core.apps.dashboard.views.order import OrderViewSet from core.apps.dashboard.views.order import OrderViewSet
# payment
from core.apps.dashboard.views.payment import PaymentListApiView
urlpatterns = [ urlpatterns = [
@@ -58,6 +60,11 @@ urlpatterns = [
path('<int:id>/delete/', region_views.RegionDeleteApiView.as_view(), name='region-delete-api'), path('<int:id>/delete/', region_views.RegionDeleteApiView.as_view(), name='region-delete-api'),
] ]
)), )),
path('payment/', include(
[
path('list/', PaymentListApiView.as_view(), name='payment-list-api'),
]
))
] ]

View File

@@ -0,0 +1,46 @@
# django
from django.shortcuts import get_object_or_404
# rest framework
from rest_framework import generics
from rest_framework.permissions import IsAdminUser
# drf yasg
from drf_yasg.utils import swagger_auto_schema
# orders
from core.apps.orders.models import Payment
# shared
from core.apps.shared.utils.response_mixin import ResponseMixin
# dashboard
from core.apps.dashboard.serializers import payment as serializers
class PaymentListApiView(generics.GenericAPIView, ResponseMixin):
serializer_class = serializers.PaymentListSerializer
queryset = Payment.objects.all()
permission_classes = [IsAdminUser]
@swagger_auto_schema(
tags=["Admin Orders"],
)
def get(self, request):
try:
query = self.queryset.all()
page = self.paginate_queryset(queryset=query)
if page is not None:
serializer = self.serializer_class(page, many=True)
return self.success_response(
data=self.get_paginated_response(serializer.data).data,
message="malumotlar fetch qilindi",
)
serializer = self.serializer_class(query, many=True)
return self.success_response(
data=serializer.data,
message='malumotlar fetch qilindi'
)
except Exception as e:
return self.error_response(
data=str(e),
message='xatolik'
)

View File

@@ -1,7 +1,7 @@
from django.contrib import admin from django.contrib import admin
# orders # orders
from core.apps.orders.models import Order, OrderItem from core.apps.orders.models import Order, OrderItem, Payment
class OrderItemInline(admin.TabularInline): class OrderItemInline(admin.TabularInline):
@@ -9,7 +9,12 @@ class OrderItemInline(admin.TabularInline):
extra = 0 extra = 0
class PaymentInline(admin.TabularInline):
model = Payment
extra = 0
@admin.register(Order) @admin.register(Order)
class OrderAdmin(admin.ModelAdmin): class OrderAdmin(admin.ModelAdmin):
list_display = ['id', 'employee_name', 'advance', 'paid_price', 'total_price'] list_display = ['id', 'employee_name', 'advance', 'paid_price', 'total_price']
inlines = [OrderItemInline] inlines = [OrderItemInline, PaymentInline]

View File

@@ -12,5 +12,5 @@ class Payment(BaseModel):
price = models.DecimalField(max_digits=15, decimal_places=2) price = models.DecimalField(max_digits=15, decimal_places=2)
def __str__(self): def __str__(self):
return self.price return f'{self.price}'