diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-10 16:55:21 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-10 18:23:34 +0100 |
commit | 4f2c8b7d8564d3f4bf59d437a79e86a7a81c88e2 (patch) | |
tree | 06bf4f465d02bcb5fe7a7b281fbd4b12c9c967fb /ishtar_common/models.py | |
parent | 9b3f2e0d6523958742256840266119395af860c3 (diff) | |
download | Ishtar-4f2c8b7d8564d3f4bf59d437a79e86a7a81c88e2.tar.bz2 Ishtar-4f2c8b7d8564d3f4bf59d437a79e86a7a81c88e2.zip |
✨ sheet account: display attached items (refs #6208)
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. |