From c93dd3812c53d21ab8517dc7af72e1d4b70a1b04 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 16 Oct 2024 17:57:13 +0200 Subject: ♻ permissions refactoring: refactor has_permission methods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archaeological_warehouse/views.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'archaeological_warehouse/views.py') diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index 4b3f494d8..416849c9a 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -95,10 +95,13 @@ new_container = new_qa_item( def autocomplete_warehouse(request): - if not request.user.has_perm( - "ishtar_common.view_warehouse", models.Warehouse - ) and not request.user.has_perm( - "ishtar_common.view_own_warehouse", models.Warehouse + ishtaruser = getattr(request.user, "ishtaruser", None) + if not ishtaruser: + return HttpResponse(content_type="text/plain") + if not ishtaruser.has_permission( + "archaeological_warehouse.view_warehouse" + ) and not ishtaruser.has_permission( + "archaeological_warehouse.view_own_warehouse", models.Warehouse ): return HttpResponse(content_type="text/plain") if not request.GET.get("term"): @@ -106,7 +109,8 @@ def autocomplete_warehouse(request): q = request.GET.get("term") query = Q() for q in q.split(" "): - extra = Q(name__icontains=q) | Q(slug__icontains=q) | Q(warehouse_type__label__icontains=q) + extra = Q(name__icontains=q) | Q(slug__icontains=q) | \ + Q(warehouse_type__label__icontains=q) query = query & extra limit = 15 warehouses = models.Warehouse.objects.filter(query)[:limit] @@ -117,10 +121,13 @@ def autocomplete_warehouse(request): def autocomplete_container(request, warehouse_id=None): - if not request.user.has_perm( - "ishtar_common.view_warehouse", models.Warehouse - ) and not request.user.has_perm( - "ishtar_common.view_own_warehouse", models.Warehouse + ishtaruser = getattr(request.user, "ishtaruser", None) + if not ishtaruser: + return HttpResponse(content_type="text/plain") + if not ishtaruser.has_permission( + "archaeological_warehouse.view_container" + ) and not ishtaruser.has_permission( + "archaeological_warehouse.view_own_container" ): return HttpResponse(content_type="text/plain") if not request.GET.get("term"): -- cgit v1.2.3