summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py31
-rw-r--r--ishtar_common/templates/ishtar/sheet_ishtaruser.html22
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 %} &nbsp;<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 %}