diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-10-16 17:57:13 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-19 14:43:48 +0100 |
commit | c93dd3812c53d21ab8517dc7af72e1d4b70a1b04 (patch) | |
tree | 2153d8fd121f7ecd08a31e4867d58a2eb3c9aab7 /archaeological_context_records | |
parent | b8eef9b6aaed7ee097f8ea86174067f9ca42abd8 (diff) | |
download | Ishtar-c93dd3812c53d21ab8517dc7af72e1d4b70a1b04.tar.bz2 Ishtar-c93dd3812c53d21ab8517dc7af72e1d4b70a1b04.zip |
♻ permissions refactoring: refactor has_permission methods
Diffstat (limited to 'archaeological_context_records')
-rw-r--r-- | archaeological_context_records/ishtar_menu.py | 20 | ||||
-rw-r--r-- | archaeological_context_records/models.py | 24 | ||||
-rw-r--r-- | archaeological_context_records/urls.py | 34 | ||||
-rw-r--r-- | archaeological_context_records/views.py | 13 |
4 files changed, 61 insertions, 30 deletions
diff --git a/archaeological_context_records/ishtar_menu.py b/archaeological_context_records/ishtar_menu.py index 6d4ae1a57..488897aa9 100644 --- a/archaeological_context_records/ishtar_menu.py +++ b/archaeological_context_records/ishtar_menu.py @@ -23,7 +23,7 @@ from ishtar_common.menu_base import SectionItem, MenuItem from . import models -# be carreful: each access_controls must be relevant with check_rights in urls +# be carreful: each access_controls must be relevant with check_permissions in urls MENU_SECTIONS = [ ( @@ -38,21 +38,27 @@ MENU_SECTIONS = [ "record_search", _("Search"), model=models.ContextRecord, - access_controls=["view_contextrecord", "view_own_contextrecord"], + access_controls=[ + "archaeological_context_records.view_contextrecord", + "archaeological_context_records.view_own_contextrecord" + ], ), MenuItem( "record_creation", _("Creation"), model=models.ContextRecord, - access_controls=["add_contextrecord", "add_own_contextrecord"], + access_controls=[ + "archaeological_context_records.add_contextrecord", + "archaeological_context_records.add_own_contextrecord" + ], ), MenuItem( "record_modification", _("Modification"), model=models.ContextRecord, access_controls=[ - "change_contextrecord", - "change_own_contextrecord", + "archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord", ], ), MenuItem( @@ -60,8 +66,8 @@ MENU_SECTIONS = [ _("Deletion"), model=models.ContextRecord, access_controls=[ - "delete_contextrecord", - "delete_own_contextrecord", + "archaeological_context_records.delete_contextrecord", + "archaeological_context_records.delete_own_contextrecord", ], ), ], diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index ccc145c48..2611b7dfd 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -791,14 +791,20 @@ class ContextRecord( icon_class="fa fa-lock", text=_("Lock/Unlock"), target="many", - rights=["change_contextrecord", "change_own_contextrecord"], + rights=[ + "archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord" + ], ) QA_EDIT = QuickAction( url="contextrecord-qa-bulk-update", icon_class="fa fa-pencil", text=_("Bulk update"), target="many", - rights=["change_contextrecord", "change_own_contextrecord"], + rights=[ + "archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord" + ], ) QUICK_ACTIONS = [ QA_EDIT, @@ -808,7 +814,10 @@ class ContextRecord( icon_class="fa fa-clone", text=_("Duplicate"), target="one", - rights=["change_contextrecord", "change_own_contextrecord"], + rights=[ + "archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord" + ], ), ] SERIALIZE_EXCLUDE = MainItem.SERIALIZE_EXCLUDE + ["contextrecord"] @@ -1159,12 +1168,15 @@ class ContextRecord( actions = super().get_extra_actions(request) is_locked = hasattr(self, "is_locked") and self.is_locked(request.user) - can_edit_cr = self.can_do(request, "change_contextrecord") + can_edit_cr = self.can_do( + request, "archaeological_context_records.change_contextrecord" + ) profile = get_current_profile() - can_add_geo = profile.mapping and self.can_do(request, "add_geovectordata") + can_add_geo = profile.mapping and \ + self.can_do(request, "ishtar_common.add_geovectordata") if can_add_geo: actions.append(self.get_add_geo_action()) - can_create_find = self.can_do(request, "add_find") + can_create_find = self.can_do(request, "archaeological_finds.add_find") if can_create_find: actions += [ ( diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py index 2b95db086..338f5bb2a 100644 --- a/archaeological_context_records/urls.py +++ b/archaeological_context_records/urls.py @@ -20,38 +20,42 @@ from django.conf.urls import url from django.urls import path -from ishtar_common.utils import check_rights +from ishtar_common.utils import check_permissions from archaeological_context_records import models, views, views_api -# be careful: each check_rights must be relevant with ishtar_menu +# be careful: each check_permissions must be relevant with ishtar_menu # forms urlpatterns = [ # Context records url( r"record_search/(?P<step>.+)?$", - check_rights(["view_contextrecord", "view_own_contextrecord"])( + check_permissions(["archaeological_context_records.view_contextrecord", + "archaeological_context_records.view_own_contextrecord"])( views.record_search_wizard ), name="record_search", ), url( r"contextrecord_search/(?P<step>.+)?$", - check_rights(["view_contextrecord", "view_own_contextrecord"])( + check_permissions(["archaeological_context_records.view_contextrecord", + "archaeological_context_records.view_own_contextrecord"])( views.record_search_wizard ), name="contextrecord_search", ), url( r"record_creation/(?P<step>.+)?$", - check_rights(["add_contextrecord", "add_own_contextrecord"])( + check_permissions(["archaeological_context_records.add_contextrecord", + "archaeological_context_records.add_own_contextrecord"])( views.record_creation_wizard ), name="record_creation", ), url( r"record_modification/(?P<step>.+)?$", - check_rights(["change_contextrecord", "change_own_contextrecord"])( + check_permissions(["archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord"])( views.record_modification_wizard ), name="record_modification", @@ -59,7 +63,8 @@ urlpatterns = [ url(r"record_modify/(?P<pk>.+)/$", views.record_modify, name="record_modify"), url( r"record_deletion/(?P<step>.+)?$", - check_rights(["change_contextrecord", "change_own_contextrecord"])( + check_permissions(["archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord"])( views.record_deletion_wizard ), name="record_deletion", @@ -151,14 +156,16 @@ urlpatterns = [ ), url( r"^context-record-relations-modify/(?P<pk>.+)/$", - check_rights(["change_contextrecord", "change_own_contextrecord"])( + check_permissions(["archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord"])( views.context_record_modify_relations ), name="context-record-relation-modify", ), url( r"^operation-qa-contextrecord/(?P<pks>[0-9]+)/$", - check_rights(["add_contextrecord", "add_own_contextrecord"])( + check_permissions(["archaeological_context_records.add_contextrecord", + "archaeological_context_records.add_own_contextrecord"])( views.QAOperationContextRecordView.as_view() ), name="operation-qa-contextrecord", @@ -171,21 +178,24 @@ urlpatterns = [ ), url( r"^contextrecord-qa-duplicate/(?P<pks>[0-9-]+)?/$", - check_rights(["change_contextrecord", "change_own_contextrecord"])( + check_permissions(["archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord"])( views.QAContextRecordDuplicateFormView.as_view() ), name="contextrecord-qa-duplicate", ), url( r"^contextrecord-qa-bulk-update/(?P<pks>[0-9-]+)?/$", - check_rights(["change_contextrecord", "change_own_contextrecord"])( + check_permissions(["archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord"])( views.QAContextRecordForm.as_view() ), name="contextrecord-qa-bulk-update", ), url( r"^contextrecord-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$", - check_rights(["change_contextrecord", "change_own_contextrecord"])( + check_permissions(["archaeological_context_records.change_contextrecord", + "archaeological_context_records.change_own_contextrecord"])( views.QAContextRecordForm.as_view() ), name="contextrecord-qa-bulk-update-confirm", diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 15b2aee30..fdee2c459 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -51,11 +51,13 @@ revert_contextrecord = revert_item(models.ContextRecord) def autocomplete_contextrecord(request): - if not request.user.has_perm( - "archaeological_context_records.view_contextrecord", models.ContextRecord - ) and not request.user.has_perm( + ishtaruser = getattr(request.user, "ishtaruser", None) + if not ishtaruser: + return HttpResponse(content_type="text/plain") + if not ishtaruser.has_permission( + "archaeological_context_records.view_contextrecord" + ) and not ishtaruser.has_permission( "archaeological_context_records.view_own_contextrecord", - models.ArchaeologicalSite, ): return HttpResponse(content_type="text/plain") if not request.GET.get("term"): @@ -258,7 +260,8 @@ class QAOperationContextRecordView(QAItemForm): icon_class="fa fa-plus", text=_("Add context record"), target="one", - rights=["add_contextrecord", "add_own_contextrecord"], + rights=["archaeological_context_records.add_contextrecord", + "archaeological_context_records.add_own_contextrecord"], ) def form_valid(self, form): |