summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-03-24 19:04:54 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:20 +0100
commit2d7a40f22bc9da10515330becff08c589012c0ba (patch)
tree75e1154c53fa775498c3fb91d70c6a7f7a6d59f1 /archaeological_warehouse/models.py
parentd357a8d182d9eb7b3df67d9eb9e127d83bb952fe (diff)
downloadIshtar-2d7a40f22bc9da10515330becff08c589012c0ba.tar.bz2
Ishtar-2d7a40f22bc9da10515330becff08c589012c0ba.zip
Container: add parents - localisation refactoring
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 7b98a385a..839ca1a6e 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -653,6 +653,9 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
null=True, blank=True, db_index=True)
cached_division = models.TextField(_(u"Cached division"),
null=True, blank=True, db_index=True)
+ parent = models.ForeignKey("Container", verbose_name=_("Parent container"),
+ on_delete=models.SET_NULL,
+ blank=True, null=True)
index = models.IntegerField(u"Container ID", default=0)
old_reference = models.TextField(_(u"Old reference"), blank=True, null=True)
external_id = models.TextField(_(u"External ID"), blank=True, null=True)
@@ -695,16 +698,24 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
def _generate_cached_location(self):
items = [self.location.name, str(self.index)]
- cached_label = u" - ".join(items)
+ cached_label = " - ".join(items)
return cached_label
def _generate_cached_division(self):
+ parents = []
+ parent = self.parent
+ c_ids = []
+ while parent:
+ if parent.id in c_ids: # prevent cyclic
+ break
+ c_ids.append(parent.id)
+ parents.append(parent)
+ parent = parent.parent
locas = [
- u"{} {}".format(loca.division.division, loca.reference)
- for loca in ContainerLocalisation.objects.filter(
- container=self)
+ "{} {}".format(loca.container_type.name, loca.reference)
+ for loca in reversed(parents)
]
- return u" | ".join(locas)
+ return " | ".join(locas)
def _get_base_image_path(self):
return self.responsible._get_base_image_path() + u"/" + self.external_id