diff options
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 |
commit | cd421572fcfb1ffc09fc9f7c6c5e4b90182e027f (patch) | |
tree | edf68b05183449abf406ba6eb9e642d77623bb95 /archaeological_warehouse/models.py | |
parent | 362df5dd42f41237ed1545571704a56db59e4d46 (diff) | |
download | Ishtar-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.py | 17 |
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) |