diff options
| -rw-r--r-- | ishtar_common/models.py | 21 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/sheet_ishtaruser.html | 9 | ||||
| -rw-r--r-- | 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 %}                  </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: | 
