summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-24 16:34:07 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-04-24 16:53:20 +0200
commit14eb8da0f0db27c03fc23628be88b85e0e1169ae (patch)
tree20a98627614a3d7c92302aa4d1320639563086c6 /ishtar_common
parentfb8f2ab9b8fc95bfa63b5d749a1c79ce8a55756c (diff)
downloadIshtar-14eb8da0f0db27c03fc23628be88b85e0e1169ae.tar.bz2
Ishtar-14eb8da0f0db27c03fc23628be88b85e0e1169ae.zip
✨ sheet: display editors - add editors link on person sheet (refs #6718)
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py45
-rw-r--r--ishtar_common/templates/ishtar/blocks/sheet_creation_section.html3
-rw-r--r--ishtar_common/templates/ishtar/sheet_person.html78
-rw-r--r--ishtar_common/urls.py5
-rw-r--r--ishtar_common/views.py12
5 files changed, 120 insertions, 23 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 0d9155aef..af78961a3 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -3388,6 +3388,51 @@ class Person(Address, Merge, OwnPerms, ValueGetter, MainItem):
]
return slugify("-".join(values))
+ @property
+ def file_edited(self):
+ model = apps.get_model("archaeological_files", "File")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def operation_edited(self):
+ model = apps.get_model("archaeological_operations", "Operation")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def site_edited(self):
+ model = apps.get_model("archaeological_operations", "ArchaeologicalSite")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def adminact_edited(self):
+ model = apps.get_model("archaeological_operations", "AdministrativeAct")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def context_record_edited(self):
+ model = apps.get_model("archaeological_context_records", "ContextRecord")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def find_edited(self):
+ model = apps.get_model("archaeological_finds", "Find")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def treatment_edited(self):
+ model = apps.get_model("archaeological_finds", "Treatment")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def container_edited(self):
+ model = apps.get_model("archaeological_warehouse", "Container")
+ return model.objects.filter(editors__person_id=self.pk)
+
+ @property
+ def warehouse_edited(self):
+ model = apps.get_model("archaeological_warehouse", "Warehouse")
+ return model.objects.filter(editors__person_id=self.pk)
+
def docs_q(self):
return Document.objects.filter(authors__person=self)
diff --git a/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html b/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html
index fb011dedc..3d1011af1 100644
--- a/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html
+++ b/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html
@@ -1,4 +1,5 @@
-{% load i18n link_to_window %}
+{% load i18n link_to_window window_field %}
+{% field_flex_detail_multiple _("Editors") item.editors %}
{% if not is_external %}
{% if item.history_creator.ishtaruser.person %}
<div class="col-12 col-md-6 col-lg-3 flex-wrap text-muted"
diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html
index d8f07ac2b..aa682b31d 100644
--- a/ishtar_common/templates/ishtar/sheet_person.html
+++ b/ishtar_common/templates/ishtar/sheet_person.html
@@ -10,13 +10,13 @@
{% block content %}
<div class="row">
- {% field_flex "Title" item.full_title %}
- {% field_flex "Name" item.name %}
- {% field_flex "Surname" item.surname %}
- {% field_flex "Raw name" item.raw_name %}
- {% field_flex "Email" item.email %}
- {% field_flex "Type(s)" item.person_types_list %}
- {% field_flex_detail_multiple "Biographical notes" item.biographical_notes %}
+ {% field_flex _("Title") item.full_title %}
+ {% field_flex _("Name") item.name %}
+ {% field_flex _("Surname") item.surname %}
+ {% field_flex _("Raw name") item.raw_name %}
+ {% field_flex _("Email") item.email %}
+ {% field_flex _("Type(s)") item.person_types_list %}
+ {% field_flex_detail_multiple _("Biographical notes") item.biographical_notes %}
{% if ADMIN %}
{% field_flex_detail _("Account") item.ishtaruser %}
{% endif %}
@@ -51,9 +51,9 @@
{% if item.address or item.postal_code or item.town or item.precise_town %}
<h3>{% trans "Business address" %}</h3>
<div class="row">
- {% field_flex "Address" item.address %}
- {% field_flex "Address complement" item.address_complement %}
- {% field_flex "Postal code" item.postal_code %}
+ {% field_flex _("Address") item.address %}
+ {% field_flex _("Address complement") item.address_complement %}
+ {% field_flex _("Postal code") item.postal_code %}
{% field_flex _("Town (freeform)") item.town %}
{% field_flex_detail _("Town") item.precise_town %}
</div>{% endif %}
@@ -61,26 +61,25 @@
{% if item.alt_address or item.alt_postal_code or item.alt_town %}
<h3>{% trans "Other address" %}</h3>
<div class="row">
- {% field_flex "Address" item.alt_address %}
- {% field_flex "Address complement" item.alt_address_complement %}
- {% field_flex "Postal code" item.alt_postal_code %}
- {% field_flex "Town" item.alt_town %}
+ {% field_flex _("Address") item.alt_address %}
+ {% field_flex _("Address complement") item.alt_address_complement %}
+ {% field_flex _("Postal code") item.alt_postal_code %}
+ {% field_flex _("Town") item.alt_town %}
</div>{% endif %}
{% if item.attached_to %}<h3>{% trans "Associated organization"%}</h3>
<div class="row">
- {% field_flex_detail "Name" item.attached_to %}
- {% field_flex "Address" item.attached_to.address %}
- {% field_flex "Address complement" item.attached_to.address_complement %}
- {% field_flex "Postal code" item.attached_to.postal_code %}
+ {% field_flex_detail _("Name") item.attached_to %}
+ {% field_flex _("Address") item.attached_to.address %}
+ {% field_flex _("Address complement") item.attached_to.address_complement %}
+ {% field_flex _("Postal code") item.attached_to.postal_code %}
{% field_flex _("Town (freeform)") item.attached_to.town %}
{% field_flex_detail _("Town") item.attached_to.precise_town %}
- {% field_flex "Phone" item.attached_to.phone %}
- {% field_flex "Mobile phone" item.attached_to.mobile_phone %}
+ {% field_flex _("Phone") item.attached_to.phone %}
+ {% field_flex _("Mobile phone") item.attached_to.mobile_phone %}
</div>{% endif %}
-
{% trans "Associated operations as scientist" as ao %}
{% if item.operation_scientist_responsability.count %}
{% dynamic_table_document ao 'operations' 'scientist__pk' item.pk '' output %}
@@ -173,6 +172,42 @@
{% dynamic_table_document docs 'documents' 'authors__person__pk' item.pk '' output %}
{% endif %}
+{% if item.file_edited.count %}
+{% dynamic_table_document _("Edited file sheets") 'files' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.site_edited.count %}
+{% dynamic_table_document _("Edited site sheets") 'sites' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.operation_edited.count %}
+{% dynamic_table_document _("Edited operation sheets") 'operations' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.context_record_edited.count %}
+{% dynamic_table_document _("Edited context record sheets") 'context_records' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.find_edited.count %}
+{% dynamic_table_document _("Edited find sheets") 'finds' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.treatment_edited.count %}
+{% dynamic_table_document _("Edited treatement sheets") 'treatments' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.warehouse_edited.count %}
+{% dynamic_table_document _("Edited warehouse sheets") 'warehouses' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.container_edited.count %}
+{% dynamic_table_document _("Edited container sheets") 'containers' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
+{% if item.adminact_edited.count %}
+{% dynamic_table_document _("Edited administrative act sheets") 'admin_acts' 'editors__person_id' item.pk '' output %}
+{% endif %}
+
{% if not is_external %}
{% if item.history_creator or item.last_edition_date or item.created %}
<h3>{% trans "Sheet"%}</h3>
@@ -182,5 +217,4 @@
{% endif %}
{% endif %}
-
{% endblock %}
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index 66fe1ae36..7f688074e 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -506,6 +506,11 @@ urlpatterns += [
views.show_person,
name="show-person",
),
+ re_path(
+ r"show-author(?:/(?P<pk>.+))?/(?P<type>.+)?$",
+ views.show_author,
+ name="show-author",
+ ),
path(
"show-ishtaruser/",
check_permissions(["ishtaradmin"])(views.show_ishtaruser),
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 693562bd8..e219e5633 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1246,6 +1246,18 @@ show_ishtaruser = show_item(models.IshtarUser, "ishtaruser", callback=get_ishtar
show_biographical_note = show_item(models.BiographicalNote, "biographicalnote")
+def show_author(request, pk, **dct):
+ """
+ Redirect to the person sheet.
+ Permissions are managed in the show_person view
+ """
+ try:
+ author = models.Author.objects.get(pk=pk)
+ except models.Author.DoesNotExist:
+ raise Http404()
+ return show_person(request, author.person_id, **dct)
+
+
def show_qualified_biographical_note(request, pk, **dct):
q = models.QualifiedBiographicalNote.objects.filter(pk=pk)
if not q.exists():