summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/models.py21
-rw-r--r--ishtar_common/templates/ishtar/sheet_ishtaruser.html9
-rw-r--r--ishtar_common/views_item.py23
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 %}
</dd>
</dl>
+ <dl class="col-12 flex-wrap">
+ <dt>{% trans "Permission(s)" %}</dt>
+ <dd>
+ <ul>
+ {% for item, permissions in item.person.groups_display %}
+ <li><em>{{item}}</em>{{ PUNCTUATION.colon }} {{permissions}}</li>{% endfor %}
+ </ul>
+ </dd>
+ </dl>
</div>
{% if item.is_ishtaradmin %}
<div class="alert alert-warning" role="alert">
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 89caaef77..7407eb37f 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -41,11 +41,12 @@ from django.shortcuts import render
from django.template import loader
from django.urls import reverse, NoReverseMatch
from django.utils.translation import (
- ugettext,
- ugettext_lazy as _,
activate,
deactivate,
+ get_language,
pgettext_lazy,
+ ugettext,
+ ugettext_lazy as _,
)
from guardian.models import UserObjectPermission
from tidylib import tidy_document as tidy
@@ -458,6 +459,20 @@ def filter_sheet(ishtar_user, item):
return new_item
+PUNCTUATION = {
+ "fr": {
+ "colon": " :",
+ "exclamation": " !",
+ "question": " ?",
+ },
+ "en": {
+ "colon": ":",
+ "exclamation": "!",
+ "question": "?",
+ },
+}
+
+
def show_item(model, name, extra_dct=None, model_for_perms=None, callback=None):
def func(request, pk, **dct):
check_model = model
@@ -497,6 +512,10 @@ def show_item(model, name, extra_dct=None, model_for_perms=None, callback=None):
dct["ENCODING"] = settings.ENCODING
dct["DOT_GENERATION"] = settings.DOT_BINARY and profile.relation_graph
dct["SHOW_GEO"] = profile.mapping
+ current_language = get_language()
+ if current_language not in PUNCTUATION:
+ current_language = "en"
+ dct["PUNCTUATION"] = PUNCTUATION[current_language]
dct["current_window_url"] = url_name
date = None
if "date" in dct: