From 23d79ea85a3f892300ca7257715fc986adb4f811 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Fri, 21 Nov 2025 16:41:35 +0500 Subject: [PATCH] added new fields --- core/apps/admin_panel/serializers/order.py | 2 +- core/apps/admin_panel/serializers/product.py | 4 ++-- core/apps/admin_panel/views/order.py | 2 +- core/apps/orders/admin/order.py | 2 +- .../orders/migrations/0011_order_status.py | 18 ++++++++++++++++++ core/apps/orders/models/order.py | 5 +++++ core/apps/orders/serializers/order.py | 2 +- core/apps/orders/views/order.py | 2 +- .../migrations/0011_product_is_active.py | 18 ++++++++++++++++++ core/apps/products/models/product.py | 1 + core/apps/products/serializers/product.py | 2 +- core/apps/products/views/product.py | 6 +++--- 12 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 core/apps/orders/migrations/0011_order_status.py create mode 100644 core/apps/products/migrations/0011_product_is_active.py diff --git a/core/apps/admin_panel/serializers/order.py b/core/apps/admin_panel/serializers/order.py index cc3e5a4..25a6a34 100644 --- a/core/apps/admin_panel/serializers/order.py +++ b/core/apps/admin_panel/serializers/order.py @@ -30,7 +30,7 @@ class OrderSerializer(serializers.ModelSerializer): class Meta: model = Order fields = [ - 'id', 'order_number', 'total_price', 'user', 'payment_type', 'delivery_type', + 'id', 'order_number', 'status', 'total_price', 'user', 'payment_type', 'delivery_type', 'delivery_price', 'contact_number', 'comment', 'name', 'items', 'created_at' ] diff --git a/core/apps/admin_panel/serializers/product.py b/core/apps/admin_panel/serializers/product.py index 306867d..5e855fa 100644 --- a/core/apps/admin_panel/serializers/product.py +++ b/core/apps/admin_panel/serializers/product.py @@ -7,7 +7,7 @@ class AdminProductListSerializer(serializers.ModelSerializer): class Meta: model = Product fields = [ - 'id', 'name_uz', 'name_ru', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity', 'code', + 'id', 'name_uz', 'name_ru', 'is_active', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity', 'code', ] def get_category(self, obj): @@ -21,7 +21,7 @@ class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = [ - 'name_uz', 'name_ru', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity' + 'name_uz', 'name_ru', 'is_active', 'image', 'category', 'price', 'description_uz', 'description_ru', 'unity', 'tg_id', 'code', 'article', 'quantity_left', 'min_quantity' ] extra_kwargs = { 'image': {'required':False}, diff --git a/core/apps/admin_panel/views/order.py b/core/apps/admin_panel/views/order.py index 4448db2..7ec391a 100644 --- a/core/apps/admin_panel/views/order.py +++ b/core/apps/admin_panel/views/order.py @@ -10,7 +10,7 @@ from core.apps.orders.models import Order class OrderListApiView(generics.GenericAPIView): serializer_class = OrderSerializer - queryset = Order.objects.select_related('user').prefetch_related('items', 'items__product').order_by('order_number') + queryset = Order.objects.select_related('user').prefetch_related('items', 'items__product').order_by('status', 'order_number') permission_classes = [IsAdminUser] def get(self, request): diff --git a/core/apps/orders/admin/order.py b/core/apps/orders/admin/order.py index f232762..ff5335c 100644 --- a/core/apps/orders/admin/order.py +++ b/core/apps/orders/admin/order.py @@ -10,5 +10,5 @@ class OrderItemInline(admin.TabularInline): @admin.register(Order) class OrderAdmin(admin.ModelAdmin): - list_display = ['id', 'user', 'total_price'] + list_display = ['id', 'user', 'total_price', 'status'] inlines = [OrderItemInline] \ No newline at end of file diff --git a/core/apps/orders/migrations/0011_order_status.py b/core/apps/orders/migrations/0011_order_status.py new file mode 100644 index 0000000..625380f --- /dev/null +++ b/core/apps/orders/migrations/0011_order_status.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2 on 2025-11-21 16:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0010_remove_order_address'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='status', + field=models.CharField(choices=[('NEW', 'yangi'), ('DONE', 'tayyor')], default='NEW', max_length=20), + ), + ] diff --git a/core/apps/orders/models/order.py b/core/apps/orders/models/order.py index 0148377..00f6a4a 100644 --- a/core/apps/orders/models/order.py +++ b/core/apps/orders/models/order.py @@ -15,6 +15,10 @@ class Order(BaseModel): ('DELIVERY_COURIES', 'kuryer orqali yetkazib berish'), ('PICKUP', 'olib ketish'), ) + STATUS = ( + ('NEW', 'yangi'), + ('DONE', 'tayyor'), + ) total_price = models.PositiveBigIntegerField(default=0) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders') @@ -25,6 +29,7 @@ class Order(BaseModel): contact_number = models.CharField(max_length=15, null=True, blank=True) comment = models.CharField(max_length=500, null=True, blank=True) name = models.CharField(max_length=200, null=True, blank=True) + status = models.CharField(max_length=20, choices=STATUS, default='NEW') def __str__(self): return f'{self.user} order' diff --git a/core/apps/orders/serializers/order.py b/core/apps/orders/serializers/order.py index 81a3058..2fd1d2e 100644 --- a/core/apps/orders/serializers/order.py +++ b/core/apps/orders/serializers/order.py @@ -88,6 +88,6 @@ class OrderListSerializer(serializers.ModelSerializer): class Meta: model = Order fields = [ - 'id', 'order_number', 'total_price', 'payment_type', 'delivery_type', 'delivery_price', + 'id', 'order_number', 'status', 'total_price', 'payment_type', 'delivery_type', 'delivery_price', 'contact_number', 'comment', 'name', 'items', 'created_at' ] \ No newline at end of file diff --git a/core/apps/orders/views/order.py b/core/apps/orders/views/order.py index 49374c9..a959ad5 100644 --- a/core/apps/orders/views/order.py +++ b/core/apps/orders/views/order.py @@ -7,7 +7,7 @@ from core.apps.orders.serializers import order as serializers class OrderCreateApiView(generics.GenericAPIView): serializer_class = serializers.OrderCreateSerializer - queryset = Order.objects.all() + queryset = Order.objects.order_by('status') permission_classes = [permissions.IsAuthenticated] def post(self, request): diff --git a/core/apps/products/migrations/0011_product_is_active.py b/core/apps/products/migrations/0011_product_is_active.py new file mode 100644 index 0000000..90691aa --- /dev/null +++ b/core/apps/products/migrations/0011_product_is_active.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2 on 2025-11-21 16:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('products', '0010_product_min_quantity'), + ] + + operations = [ + migrations.AddField( + model_name='product', + name='is_active', + field=models.BooleanField(default=True), + ), + ] diff --git a/core/apps/products/models/product.py b/core/apps/products/models/product.py index a73c937..8233aac 100644 --- a/core/apps/products/models/product.py +++ b/core/apps/products/models/product.py @@ -27,6 +27,7 @@ class Product(BaseModel): code = models.CharField(max_length=200, null=True, blank=True) quantity_left = models.PositiveBigIntegerField(default=0) min_quantity = models.FloatField(null=True) + is_active = models.BooleanField(default=True) def __str__(self): return self.name diff --git a/core/apps/products/serializers/product.py b/core/apps/products/serializers/product.py index 310826e..ba1894e 100644 --- a/core/apps/products/serializers/product.py +++ b/core/apps/products/serializers/product.py @@ -11,7 +11,7 @@ class ProductListSerializer(serializers.ModelSerializer): class Meta: model = Product fields = [ - 'id', 'name', 'image', 'price', 'description', 'liked', 'unity', 'min_quantity' + 'id', 'name', 'image', 'price', 'description', 'liked', 'unity', 'min_quantity', 'is_active' ] def get_liked(self, obj): diff --git a/core/apps/products/views/product.py b/core/apps/products/views/product.py index ee37d5c..534d579 100644 --- a/core/apps/products/views/product.py +++ b/core/apps/products/views/product.py @@ -9,14 +9,14 @@ from core.apps.products.serializers import product as serializers class ProductListApiView(generics.GenericAPIView): serializer_class = serializers.ProductListSerializer - queryset = Product.objects.select_related('unity').order_by('name') + queryset = Product.objects.filter(is_active=True).select_related('unity').order_by('name') permission_classes = [] filter_backends = [filters.SearchFilter] search_fields = ['name'] def get(self, request, category_id): category = get_object_or_404(Category, id=category_id) - products = Product.objects.filter(category=category).select_related('unity').distinct()\ + products = Product.objects.filter(category=category, is_active=True).select_related('unity').distinct()\ .order_by('name') page = self.paginate_queryset(self.filter_queryset(products)) if page is not None: @@ -28,7 +28,7 @@ class ProductListApiView(generics.GenericAPIView): class ProductsApiView(generics.GenericAPIView): serializer_class = serializers.ProductListSerializer - queryset = Product.objects.select_related('unity') + queryset = Product.objects.select_related('unity').filter(is_active=True) permission_classes = [] def get(self, request):