feat: Enhance admin permissions and improve product currency handling

This commit is contained in:
Parsa Nazer
2025-12-10 12:38:42 +03:30
parent f0ff23094f
commit 9ea69925c9
13 changed files with 438 additions and 47 deletions
+167
View File
@@ -16,3 +16,170 @@ class ProductDetailCategoryPermission:
def has_view_permission(self, request, obj=None):
return True
class ProductAdminPermission:
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj=None):
if request.user.is_superuser or obj == None:
return True
if not hasattr(request.user, 'shop'):
return False
return request.user.shop == obj.shop
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser or obj == None:
return True
if not hasattr(request.user, 'shop'):
return False
return request.user.shop == obj.shop
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
return request.user.shop == obj.shop
def get_queryset(self, request):
from product.models import ProductModel
if request.user.is_superuser:
return ProductModel.objects.all()
if not hasattr(request.user, 'shop'):
return ProductModel.objects.none()
return ProductModel.objects.filter(shop=request.user.shop)
class ProductVariantAdminPermission:
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj=None):
if request.user.is_superuser or obj == None:
return True
if not hasattr(request.user, 'shop'):
return False
return request.user.shop == obj.product.shop
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser or obj == None:
return True
if not hasattr(request.user, 'shop'):
return False
return request.user.shop == obj.product.shop
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
return request.user.shop == obj.product.shop
def get_queryset(self, request):
from product.models import ProductVariant
if request.user.is_superuser:
return ProductVariant.objects.all()
if not hasattr(request.user, 'shop'):
return ProductVariant.objects.none()
return ProductVariant.objects.filter(product__shop=request.user.shop)
class ProductVariantInlineAdminPermission:
def has_add_permission(self, request, obj):
return True
def has_change_permission(self, request, obj=None):
if request.user.is_superuser or obj == None:
return True
if not hasattr(request.user, 'shop'):
return False
return request.user.shop == obj.shop
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser or obj == None:
return True
if not hasattr(request.user, 'shop'):
return False
return request.user.shop == obj.shop
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
return request.user.shop == obj.shop
def get_queryset(self, request):
from product.models import ProductVariant
if request.user.is_superuser:
return ProductVariant.objects.all()
if not hasattr(request.user, 'shop'):
return ProductVariant.objects.none()
return ProductVariant.objects.filter(product__shop=request.user.shop)
class InPackItemsAdminPermission:
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj = ...):
return False
def has_delete_permission(self, request, obj = ...):
return False
def has_view_permission(self, request, obj = ...):
return True
class AttributeTypeAdminPermission:
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj = ...):
return False
def has_delete_permission(self, request, obj = ...):
return False
def has_view_permission(self, request, obj = ...):
return True
class AttributeValueAdminPermission:
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj = ...):
return False
def has_delete_permission(self, request, obj = ...):
return False
def has_view_permission(self, request, obj = ...):
return True