diff --git a/admin_panel/templates/admin_panel/newOperation.html b/admin_panel/templates/admin_panel/newOperation.html index c8b6433..6ec8baf 100644 --- a/admin_panel/templates/admin_panel/newOperation.html +++ b/admin_panel/templates/admin_panel/newOperation.html @@ -20,8 +20,10 @@
diff --git a/admin_panel/templates/admin_panel/store.html b/admin_panel/templates/admin_panel/store.html index 08787f8..1300bfb 100644 --- a/admin_panel/templates/admin_panel/store.html +++ b/admin_panel/templates/admin_panel/store.html @@ -93,8 +93,12 @@ {% if perms.admin_panel.ViewStore or perms.admin_panel.OnlyAnbar %} + + {% if not user|has_group:"khadamat" %} + {% endif %} + diff --git a/admin_panel/templatetags/custom_tags.py b/admin_panel/templatetags/custom_tags.py index 9a60315..67d1af1 100644 --- a/admin_panel/templatetags/custom_tags.py +++ b/admin_panel/templatetags/custom_tags.py @@ -8,5 +8,8 @@ def toJalali(value): if(value): return JalaliDate(value).strftime("%Y/%m/%d") +def has_group(user, group_name): + return user.groups.filter(name=group_name).exists() +register.filter('has_group', has_group) register.filter('toJalali', toJalali) \ No newline at end of file diff --git a/admin_panel/views.py b/admin_panel/views.py index 6652522..5f01459 100644 --- a/admin_panel/views.py +++ b/admin_panel/views.py @@ -1191,6 +1191,9 @@ def operation(request): if request.method != 'POST': return HttpResponseBadRequest("متد ارسالی نامعتبر است.") + user_op = request.user + user_store_room = get_object_or_404(StoreRoom, owners=user_op) + # استفاده از توابع امن اختصاصی پروژه برای جداسازی مقادیر عددی prd_id = _safe_int(request.POST.get('prd_id')) action_type = request.POST.get('actionType', '') @@ -1234,6 +1237,9 @@ def operation(request): # بخش دوم: ورود و خروج دستی (کنترل مستقیم با Transaction و Lock) # ===================================================================== elif action_type in ['vorod', 'khoroj']: + user_s_room = get_object_or_404(StoreRoom, owners=user_op) + if not user_op.is_superuser and s_room != user_s_room: + return HttpResponse("شما دسترسی ورود / خروج به این انبار ندارید") with transaction.atomic(): # ساخت کوئری پایه برای دریافت تراکنش‌های سال جاری کالا qs = ProductInStore.objects.filter(