From 031beec97f2b4ebdb0aca269d0d97b2df358d81d Mon Sep 17 00:00:00 2001 From: Parsa Nazer Date: Sun, 4 Jan 2026 21:29:50 +0330 Subject: [PATCH] update product and shop admin permissions --- backend/product/admin.py | 28 +++++++++---------- .../0067_alter_productmodel_image_and_more.py | 23 +++++++++++++++ backend/product/models.py | 4 +-- 3 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 backend/product/migrations/0067_alter_productmodel_image_and_more.py diff --git a/backend/product/admin.py b/backend/product/admin.py index 755a24c..5942dfd 100644 --- a/backend/product/admin.py +++ b/backend/product/admin.py @@ -62,25 +62,25 @@ class ShopModelAdmin(ModelAdmin, ImportExportModelAdmin): } } - # def get_queryset(self, request): + def get_queryset(self, request): - # if request.user.is_superuser: - # return ShopModel.objects.all() + if request.user.is_superuser: + return ShopModel.objects.all() - # if not hasattr(request.user, 'shop'): - # return ShopModel.objects.none() + if not hasattr(request.user, 'shop'): + return ShopModel.objects.none() - # queryset = ShopModel.objects.filter(id=request.user.shop.id) - # return queryset + queryset = ShopModel.objects.filter(id=request.user.shop.id) + return queryset - # def has_view_permission(self, request, obj=None): - # if request.user.is_superuser or obj == None: - # return True + def has_view_permission(self, request, obj=None): + if request.user.is_superuser or obj == None: + return True - # if not hasattr(request.user, 'shop'): - # return False + if not hasattr(request.user, 'shop'): + return False - # return request.user.shop == obj + return request.user.shop == obj @@ -313,7 +313,7 @@ class ProductModelAdmin(ProductAdminPermission, ModelAdmin, ImportExportModelAdm if request.user.is_superuser: return ['slug', 'created_at'] else: - return ['show_in_bot', 'bot_banner', 'shop', 'created_at', 'show'] + return ['show_in_bot', 'bot_banner', 'created_at', 'show', 'meta_description', 'meta_keywords', 'meta_rating', 'rating', 'view', 'slug'] def display_price(self, obj): if obj.variants.all().first(): diff --git a/backend/product/migrations/0067_alter_productmodel_image_and_more.py b/backend/product/migrations/0067_alter_productmodel_image_and_more.py new file mode 100644 index 0000000..c19a4d6 --- /dev/null +++ b/backend/product/migrations/0067_alter_productmodel_image_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.1.2 on 2026-01-04 17:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0066_alter_productvariant_currency_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='productmodel', + name='image', + field=models.ImageField(null=True, upload_to='product_main/'), + ), + migrations.AlterField( + model_name='productmodel', + name='related_products', + field=models.ManyToManyField(to='product.productmodel', verbose_name='محصولات مرتبط'), + ), + ] diff --git a/backend/product/models.py b/backend/product/models.py index deb9bef..68938ca 100644 --- a/backend/product/models.py +++ b/backend/product/models.py @@ -178,7 +178,7 @@ class InPackItems(models.Model): class ProductModel(models.Model): name = models.CharField(max_length=255, verbose_name='نام') description = models.TextField(verbose_name='توضیحات') - image = models.ImageField(upload_to='product_main/', blank=True, null=True) + image = models.ImageField(upload_to='product_main/', null=True) rating = models.PositiveIntegerField(default=0, verbose_name='امتیاز') show = models.BooleanField(default=False, verbose_name='نمایش در خانه') view = models.IntegerField(default=0, verbose_name='بازدید') @@ -195,7 +195,7 @@ class ProductModel(models.Model): category = models.ForeignKey(SubCategoryModel, null=True, on_delete=models.SET_NULL, related_name='products', verbose_name='دسته بندی محصول') related_products = models.ManyToManyField( - 'self', blank=True, verbose_name='محصولات مرتبط') + 'self', verbose_name='محصولات مرتبط') shop = models.ForeignKey('account.ShopModel', on_delete=models.CASCADE, related_name='products', verbose_name='فروشگاه', blank=True, null=True) show_in_bot = models.BooleanField(