diff options
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: |