From 8fdea44cd91d3bdc1637d2595ffe5d94ce87ffae Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 3 May 2021 12:11:25 +0200 Subject: Fix material_type_label helper --- archaeological_context_records/models.py | 2 +- archaeological_finds/models_finds.py | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 6b26825be..d62dde4be 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -942,7 +942,7 @@ class ContextRecord( ids = [self.id] + [ cr.cr_id for cr in ContextRecordTree.objects.filter(cr_parent_id=self.id) ] - return BaseFind.objects.filter(context_record_id__in=ids) + return BaseFind.objects.filter(context_record_id__in=set(ids)) @property def show_url(self): diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index d825a8bb2..303d8e2b4 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -631,12 +631,18 @@ class BaseFind( return self._real_label() or self._temp_label() or "" def material_type_label(self): - find = self.get_last_find() - finds = [find and find.material_type.code or ""] - ope = self.context_record.operation - finds += [ope.code_patriarche or (str(ope.year) + "-" + ope.operation_code)] - finds += [self.context_record.label, str(self.material_index)] - return settings.JOINT.join(finds) + materials = set() + for f in self.find.all(): + for m in f.material_types.all(): + while m: + if m.code: + materials.add(m.code) + break + elif m.parent: + m = m.parent + else: + break + return "-".join(materials) def _real_label(self): if ( -- cgit v1.2.3