From 142d69997ab3175477494fa9d86aa339568dc7e9 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 3 Feb 2025 17:26:32 +0100 Subject: ✨ account sheet: explicit display of permissions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/models.py | 21 ++++++++++++++++++++ .../templates/ishtar/sheet_ishtaruser.html | 9 +++++++++ ishtar_common/views_item.py | 23 ++++++++++++++++++++-- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 5b4620254..949120383 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3057,6 +3057,27 @@ class Person(Address, Merge, OwnPerms, ValueGetter, MainItem): profile.save() return profile + @property + def groups_display(self): + groups = Group.objects.filter(profile_types__user_profiles__person=self) + groups = set(groups.values_list("name", flat=True)) + permissions = {} + for group in groups: + if ":" not in group: + permissions[group] = [] + continue + group_part = group.split(":") + item, permission = group_part[0].strip(), ":".join(group_part[1:]).strip() + item_parts = item.split(" ") + if item_parts[-1].startswith(str(_("attached"))): + item = " ".join(item_parts[:-1]) + permission = permission + " " + item_parts[-1] + if item not in permissions: + permissions[item] = [] + permissions[item].append(permission) + for item in sorted(permissions.keys()): + yield item, " ; ".join(sorted(permissions[item])) + def get_short_html_items(self): items = super(Person, self).get_short_html_items() if items or not self.attached_to: diff --git a/ishtar_common/templates/ishtar/sheet_ishtaruser.html b/ishtar_common/templates/ishtar/sheet_ishtaruser.html index 19c55ee0e..e30df5278 100644 --- a/ishtar_common/templates/ishtar/sheet_ishtaruser.html +++ b/ishtar_common/templates/ishtar/sheet_ishtaruser.html @@ -75,6 +75,15 @@ {% endfor %} +
+
{% trans "Permission(s)" %}
+
+
    + {% for item, permissions in item.person.groups_display %} +
  • {{item}}{{ PUNCTUATION.colon }} {{permissions}}
  • {% endfor %} +
+
+
{% if item.is_ishtaradmin %}