diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-29 17:47:02 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-29 17:47:02 +0100 |
commit | 46af1fc5f7d61d5bcfc516ba5fb645e5892a31a0 (patch) | |
tree | 2ecae8d0ce091985d6839784b9d4b406a6455632 /archaeological_warehouse/models.py | |
parent | 0e9d38a6ed4dce4c23e6dfc59869d9d652e6dcfa (diff) | |
parent | 36928455883bd9366afe8bbd0c48076866df5802 (diff) | |
download | Ishtar-46af1fc5f7d61d5bcfc516ba5fb645e5892a31a0.tar.bz2 Ishtar-46af1fc5f7d61d5bcfc516ba5fb645e5892a31a0.zip |
Merge branch 'master' into v0.9
Conflicts:
archaeological_warehouse/migrations/0020_generate_cache_lbl_for_containers.py
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r-- | archaeological_warehouse/models.py | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 038910d17..81660bf43 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -27,7 +27,7 @@ from django.utils.translation import ugettext_lazy as _, ugettext from ishtar_common.utils import cached_label_changed -from ishtar_common.models import GeneralType, \ +from ishtar_common.models import GeneralType, get_external_id, \ LightHistorizedItem, OwnPerms, Address, Person, post_save_cache @@ -53,6 +53,9 @@ class Warehouse(Address, OwnPerms): 'WarehouseDivision', verbose_name=_("Divisions"), blank=True, through='WarehouseDivisionLink' ) + external_id = models.TextField(_(u"External ID"), blank=True, null=True) + auto_external_id = models.BooleanField( + _(u"External ID is set automatically"), default=False) TABLE_COLS = ['name', 'warehouse_type'] @@ -80,6 +83,18 @@ class Warehouse(Address, OwnPerms): for container in self.containers.all(): cached_label_changed(Container, instance=container) + self.skip_history_when_saving = True + if not self.external_id or self.auto_external_id: + external_id = get_external_id('warehouse_external_id', self) + if external_id != self.external_id: + updated = True + self.auto_external_id = True + self.external_id = external_id + + self._cached_label_checked = False + self.save() + return + class Collection(LightHistorizedItem): name = models.CharField(_(u"Name"), max_length=200, @@ -168,6 +183,9 @@ class Container(LightHistorizedItem): cached_location = models.CharField(_(u"Cached location"), max_length=500, null=True, blank=True) index = models.IntegerField(u"Index", default=0) + external_id = models.TextField(_(u"External ID"), blank=True, null=True) + auto_external_id = models.BooleanField( + _(u"External ID is set automatically"), default=False) class Meta: verbose_name = _(u"Container") @@ -223,6 +241,7 @@ class Container(LightHistorizedItem): def save(self, *args, **kwargs): super(Container, self).save(*args, **kwargs) + updated = False if not self.index: self.skip_history_when_saving = True q = Container.objects.filter(responsible=self.responsible).order_by( @@ -231,8 +250,21 @@ class Container(LightHistorizedItem): self.index = q.all()[0].index + 1 else: self.index = 1 + updated = True + + self.skip_history_when_saving = True + if not self.external_id or self.auto_external_id: + external_id = get_external_id('container_external_id', self) + if external_id != self.external_id: + updated = True + self.auto_external_id = True + self.external_id = external_id + + if updated: self._cached_label_checked = False self.save() + return + # remove old location in warehouse q = ContainerLocalisation.objects.filter(container=self).exclude( division__warehouse=self.location) |