summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-23 18:45:31 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-23 18:45:31 +0100
commitcd421572fcfb1ffc09fc9f7c6c5e4b90182e027f (patch)
treeedf68b05183449abf406ba6eb9e642d77623bb95 /archaeological_warehouse/models.py
parent362df5dd42f41237ed1545571704a56db59e4d46 (diff)
downloadIshtar-cd421572fcfb1ffc09fc9f7c6c5e4b90182e027f.tar.bz2
Ishtar-cd421572fcfb1ffc09fc9f7c6c5e4b90182e027f.zip
Container: manage indexes by warehouse (refs #3391)
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index e4b24e2e7..d272a833a 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -157,12 +157,13 @@ class Container(LightHistorizedItem):
null=True, blank=True)
cached_location = models.CharField(_(u"Cached location"), max_length=500,
null=True, blank=True)
- index = models.IntegerField(u"Index", default=1)
+ index = models.IntegerField(u"Index", default=0)
class Meta:
verbose_name = _(u"Container")
verbose_name_plural = _(u"Containers")
ordering = ('cached_label',)
+ unique_together = ('index', 'location')
def __unicode__(self):
lbl = u" - ".join((self.reference, unicode(self.container_type),
@@ -196,6 +197,20 @@ class Container(LightHistorizedItem):
]
return location + u" | " + u", ".join(locas)
+ def save(self, *args, **kwargs):
+ super(Container, self).save(*args, **kwargs)
+
+ if not self.index:
+ self.skip_history_when_saving = True
+ q = Container.objects.filter(location=self.location).order_by(
+ '-index')
+ if q.count():
+ self.index = q.all()[0].index + 1
+ else:
+ self.index = 1
+ self._cached_label_checked = False
+ self.save()
+
post_save.connect(cached_label_changed, sender=Container)