summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
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
commit46af1fc5f7d61d5bcfc516ba5fb645e5892a31a0 (patch)
tree2ecae8d0ce091985d6839784b9d4b406a6455632 /archaeological_warehouse/models.py
parent0e9d38a6ed4dce4c23e6dfc59869d9d652e6dcfa (diff)
parent36928455883bd9366afe8bbd0c48076866df5802 (diff)
downloadIshtar-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.py34
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)