summaryrefslogtreecommitdiff
path: root/archaeological_context_records
diff options
context:
space:
mode:
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
commitc93dd3812c53d21ab8517dc7af72e1d4b70a1b04 (patch)
tree2153d8fd121f7ecd08a31e4867d58a2eb3c9aab7 /archaeological_context_records
parentb8eef9b6aaed7ee097f8ea86174067f9ca42abd8 (diff)
downloadIshtar-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.py20
-rw-r--r--archaeological_context_records/models.py24
-rw-r--r--archaeological_context_records/urls.py34
-rw-r--r--archaeological_context_records/views.py13
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):