diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 31 |
1 files changed, 30 insertions, 1 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. |