From d8f7be777261a8055283b4ba3867072481db3a3a Mon Sep 17 00:00:00 2001 From: Parsa Nazer Date: Sat, 15 Feb 2025 00:43:32 +0330 Subject: [PATCH] order urls fix intendent and order item verbose name udpate --- backend/order/admin.py | 4 +-- backend/order/models.py | 6 ++--- backend/order/urls.py | 7 +++-- backend/order/views.py | 58 ++++++++++++++++++++--------------------- 4 files changed, 39 insertions(+), 36 deletions(-) diff --git a/backend/order/admin.py b/backend/order/admin.py index 438d955..813088f 100644 --- a/backend/order/admin.py +++ b/backend/order/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from .models import * -from unfold.admin import ModelAdmin, TabularInline +from unfold.admin import ModelAdmin, TabularInline, StackedInline from import_export.admin import ImportExportModelAdmin from unfold.contrib.import_export.forms import ExportForm, ImportForm, SelectableFieldsExportForm @@ -8,7 +8,7 @@ from unfold.contrib.forms.widgets import ArrayWidget, WysiwygWidget from django.contrib.postgres.fields import ArrayField -class OrderItemModelInline(TabularInline): +class OrderItemModelInline(StackedInline): model = OrderItemModel extra = 0 max_num = 0 diff --git a/backend/order/models.py b/backend/order/models.py index 94b5396..9a5bc76 100644 --- a/backend/order/models.py +++ b/backend/order/models.py @@ -79,8 +79,8 @@ class OrderItemModel(models.Model): quantity = models.SmallIntegerField(verbose_name="تعداد") product = models.ForeignKey(ProductVariant, on_delete=models.PROTECT, verbose_name="محصول") class Meta: - verbose_name = 'محصول خریداری شده' - verbose_name_plural = 'محصولات خریداری شده' + verbose_name = 'ایتم سبد خرید' + verbose_name_plural = 'ایتم های سبد خرید' def total(self): return self.quantity * self.product.get_toman_price() @@ -88,5 +88,5 @@ class OrderItemModel(models.Model): def total_with_discount(self): return self.quantity * self.product.get_toman_price_after_discount() def __str__(self): - return f'ایتم سبد خرید محصول: {self.product} کاربر {self.order.user}' + return f'({self.product}) - ({self.order.user})' diff --git a/backend/order/urls.py b/backend/order/urls.py index c506e46..696981c 100644 --- a/backend/order/urls.py +++ b/backend/order/urls.py @@ -1,8 +1,11 @@ from django.conf.urls.static import static from django.contrib import admin from django.urls import path, include -from .views import CartItemViews +from .views import CartItemViews, CartView urlpatterns = [ - path('cart/item/', CartItemViews.as_view(), name='add cart'), + path('cart', CartView.as_view()), + path('cart/item/', CartItemViews.as_view(), name='change-item-cart'), + path('payment', CartView.as_view()), + path('', CartView.as_view()), ] diff --git a/backend/order/views.py b/backend/order/views.py index 1f3451e..d29ced5 100644 --- a/backend/order/views.py +++ b/backend/order/views.py @@ -28,41 +28,41 @@ class CartItemViews(APIView): permission_classes = [IsAuthenticated] serializer_class = OrderItemSerailzier def post(self, request, pk): - product_variant = get_object_or_404(ProductVariant, pk=pk) + product_variant = get_object_or_404(ProductVariant, pk=pk) - cart_order, created = OrderModel.objects.get_or_create( - user=request.user, - status='CART' - ) - order_item, created = OrderItemModel.objects.get_or_create( - order=cart_order, - product=product_variant, - defaults={'quantity': request.data.get('quantity', 1)} - ) + cart_order, created = OrderModel.objects.get_or_create( + user=request.user, + status='CART' + ) + order_item, created = OrderItemModel.objects.get_or_create( + order=cart_order, + product=product_variant, + defaults={'quantity': request.data.get('quantity', 1)} + ) - if not created: - order_item.quantity = request.data.get('quantity', 1) - order_item.save() + if not created: + order_item.quantity = request.data.get('quantity', 1) + order_item.save() - return Response({'detail': 'it did something'}, status=status.HTTP_201_CREATED) + return Response({'detail': f'تعداد ایتم {product_variant.product.name} به {request.data.get('quantity', 1)} تغییر کرد'}, status=status.HTTP_202_ACCEPTED) def delete(self, request, pk): - product_variant = get_object_or_404(ProductVariant, pk=pk) + product_variant = get_object_or_404(ProductVariant, pk=pk) - cart_order, created = OrderModel.objects.get_or_create( - user=request.user, - status='CART' - ) - # order_item, created = OrderItemModel.objects.get_or_create( - # order=cart_order, - # product=product_variant, - # defaults={'quantity': request.data.get('quantity', 1)} - # ) - order_item = get_object_or_404(OrderItemModel, order=cart_order, product=product_variant) - order_item.delete() - return Response({'detail': 'it did something related to delete'}, status=status.HTTP_204_NO_CONTENT) + cart_order, created = OrderModel.objects.get_or_create( + user=request.user, + status='CART' + ) + # order_item, created = OrderItemModel.objects.get_or_create( + # order=cart_order, + # product=product_variant, + # defaults={'quantity': request.data.get('quantity', 1)} + # ) + order_item = get_object_or_404(OrderItemModel, order=cart_order, product=product_variant) + order_item.delete() + return Response({'detail': f'محصول {product_variant.product.name} از سبد خرید پاک شد'}, status=status.HTTP_204_NO_CONTENT) -class CartViews(APIView): +class CartView(APIView): def get(self, request): - pass + return Response({'detail': 'این بخش در حال توسعه می باشد تا اماده شدن این بخش به نقاشی خود ادامه دهید'}, status=status.HTTP_404_NOT_FOUND)