anbar permission

This commit is contained in:
javad committed 2026-07-05 15:54:01 +03:30
1 parent 489fda27d3
commit 8d5665a1dc
4 files changed
+15

No files matched your search

@@ -20,8 +20,10 @@
<div class="select is-fullwidth">
<select name="actionType" id="actionType" required>
<option></option>
{% if not user|has_group:"khadamat" %}
<option value="vorod">ورود</option>
<option value="khoroj">خروج</option>
{% endif %}
<option value="transfer">انتقال</option>
</select>
</div>
@@ -93,8 +93,12 @@
<td>
{% if perms.admin_panel.ViewStore or perms.admin_panel.OnlyAnbar %}
{% if not user|has_group:"khadamat" %}
<span class="Oedit_prd" style="cursor: pointer;"><img style="width: 20px; height: 20px;" src="{% static 'admin_panel/icons/edit.png' %}"></span>
<span class="delet_prd" style="cursor: pointer;"><img style="width: 20px; height: 20px;" src="{% static 'admin_panel/icons/delet.png' %}"></span>
{% endif %}
<a href="{% url 'admin_panel:newOperation' s_id prd.id %}">
<span><img style="width: 20px; height: 20px;" src="{% static 'admin_panel/icons/add.png' %}"></span>
</a>
+3
View File
@@ -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)
+6
View File
@@ -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(