diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-03 17:26:32 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-19 14:45:56 +0100 |
commit | 142d69997ab3175477494fa9d86aa339568dc7e9 (patch) | |
tree | f4412d7014b5e7fe4a21540929075a4174aeee35 /ishtar_common/models.py | |
parent | 20fd9415b58aee61f30ee586930f9a06d5bbe4e9 (diff) | |
download | Ishtar-142d69997ab3175477494fa9d86aa339568dc7e9.tar.bz2 Ishtar-142d69997ab3175477494fa9d86aa339568dc7e9.zip |
✨ account sheet: explicit display of permissions
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 21 |
1 files changed, 21 insertions, 0 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: |