diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models.py | 31 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/sheet_ishtaruser.html | 22 |
2 files changed, 51 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 29995a5ba..ae0656c6d 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -48,7 +48,7 @@ from ooopy.Transformer import Transformer as OOTransformer import ooopy.Transforms as OOTransforms import uuid import zipfile -from urllib.parse import urlencode +from urllib.parse import urlencode, quote # nosec: ElementTree used to create XML not for parsing from xml.etree import ElementTree as ET # nosec @@ -4170,6 +4170,35 @@ class IshtarUser(FullSearch): self.need_permission_update = False self.save() + def get_attached_items(self): + model_list = [ + ("archaeological_files", "file"), + ("archaeological_operations", "operation"), + ("archaeological_operations", "archaeologicalsite"), + ("archaeological_context_records", "contextrecord"), + ("archaeological_finds", "find"), + ("archaeological_warehouse", "warehouse"), + ("archaeological_warehouse", "container"), + ] + attached_items = [] + search_key = str(pgettext_lazy("key for text search", "user-attached")) + for app_label, model_name in model_list: + ct = ContentType.objects.get(app_label=app_label, model=model_name) + model = ct.model_class() + q = model.objects.filter(ishtar_users__pk=self.pk) + if not q.exists(): + continue + url = getattr(model, "DEFAULT_WIZARD", None) + if url: + url = str(url) + "?" + url += urlencode( + {"query": quote(f'{search_key}="{self.person.cached_label}"')} + ) + attached_items.append( + (model._meta.verbose_name_plural, q.all(), url) + ) + return attached_items + def has_permission_dict(self): """ Get permission dict with permission codename as key and True or False as result. diff --git a/ishtar_common/templates/ishtar/sheet_ishtaruser.html b/ishtar_common/templates/ishtar/sheet_ishtaruser.html index 193093990..0f2b54883 100644 --- a/ishtar_common/templates/ishtar/sheet_ishtaruser.html +++ b/ishtar_common/templates/ishtar/sheet_ishtaruser.html @@ -10,6 +10,7 @@ {% block content %} {% if ADMIN %} {# extra check #} {% with has_permission_dict=item.has_permission_dict %} +{% with attached_items=item.get_attached_items %} <ul class="nav nav-tabs" id="{{window_id}}-tabs" role="tablist"> <li class="nav-item"> @@ -19,6 +20,15 @@ {% trans "General" %} </a> </li> + {% if attached_items %} + <li class="nav-item"> + <a class="nav-link" id="{{window_id}}-attached-tab" + data-toggle="tab" href="#{{window_id}}-attached" role="tab" + aria-controls="{{window_id}}-attached" aria-selected="false"> + {% trans "Attached items" %} + </a> + </li> + {% endif %} <li class="nav-item"> <a class="nav-link" id="{{window_id}}-view-tab" data-toggle="tab" href="#{{window_id}}-view" role="tab" @@ -93,6 +103,16 @@ {% endif %} </div> + {% if attached_items %} + <div class="tab-pane fade show" id="{{window_id}}-attached" + role="tabpanel" aria-labelledby="{{window_id}}-attached-tab"> + {% for model_name, items, search_url in attached_items %} + <h3>{{model_name}}{% if search_url %} <a href='{{search_url}}'><i class="fa fa-search" aria-hidden="true"></i></a>{% endif %}</h3> + {% field_flex_detail_multiple_full "" items %} + {% endfor %} + </div> + {% endif %} + <div class="tab-pane fade show" id="{{window_id}}-view" role="tabpanel" aria-labelledby="{{window_id}}-view-tab"> <h2>{% trans "View permissions" %}</h2> @@ -502,6 +522,6 @@ </div> -{% endwith %} +{% endwith %}{% endwith %} {% endif %} {% endblock %} |