summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-06 11:25:23 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-06 13:14:50 +0200
commit8a72cfe66f5b2bcbee5e21053a120779523bff09 (patch)
treec90abf2c8ef326981b60fcde7691afbb1f6d1b8d /archaeological_warehouse/models.py
parent71895597de8296a2e946912f12562a8486e6946f (diff)
downloadIshtar-8a72cfe66f5b2bcbee5e21053a120779523bff09.tar.bz2
Ishtar-8a72cfe66f5b2bcbee5e21053a120779523bff09.zip
Serializers: warehouse module
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 31588cde2..336046a86 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -126,7 +126,7 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem,
def __str__(self):
return self.name
- def naturel_key(self):
+ def natural_key(self):
return (self.external_id, )
def _get_base_image_path(self):
@@ -364,6 +364,12 @@ post_save.connect(post_save_cache, sender=WarehouseDivision)
post_delete.connect(post_save_cache, sender=WarehouseDivision)
+class WarehouseDivisionLinkManager(models.Manager):
+ def get_by_natural_key(self, warehouse, division):
+ return self.get(warehouse__external_id=warehouse,
+ division__txt_idx=division)
+
+
class WarehouseDivisionLink(models.Model):
RELATED_SET_NAME = "divisions"
RELATED_ATTRS = ["order"]
@@ -371,6 +377,7 @@ class WarehouseDivisionLink(models.Model):
warehouse = models.ForeignKey(Warehouse, related_name='divisions')
division = models.ForeignKey(WarehouseDivision)
order = models.IntegerField(_("Order"), default=10)
+ objects = WarehouseDivisionLinkManager()
class Meta:
ordering = ('warehouse', 'order')
@@ -379,6 +386,9 @@ class WarehouseDivisionLink(models.Model):
def __str__(self):
return u"{} - {}".format(self.warehouse, self.division)
+ def natural_key(self):
+ return self.warehouse.external_id, self.division.txt_idx
+
class ContainerType(GeneralType):
length = models.IntegerField(_(u"Length (mm)"), blank=True, null=True)
@@ -865,12 +875,20 @@ m2m_changed.connect(document_attached_changed,
sender=Container.documents.through)
+class ContainerLocalisationManager(models.Manager):
+ def get_by_natural_key(self, container, warehouse, division):
+ return self.get(container__external_id=container,
+ division__warehouse__external_id=warehouse,
+ division__division__txt_idx = division)
+
+
class ContainerLocalisation(models.Model):
container = models.ForeignKey(Container, verbose_name=_(u"Container"),
related_name='division')
division = models.ForeignKey(WarehouseDivisionLink,
verbose_name=_(u"Division"))
reference = models.CharField(_(u"Reference"), max_length=200, default='')
+ objects = ContainerLocalisationManager()
class Meta:
verbose_name = _(u"Container localisation")
@@ -883,6 +901,10 @@ class ContainerLocalisation(models.Model):
str(self.division), self.reference))
return lbl
+ def natural_key(self):
+ return self.container.external_id, self.division.warehouse.external_id,\
+ self.division.division.txt_idx
+
def save(self, *args, **kwargs):
super(ContainerLocalisation, self).save(*args, **kwargs)
self.container.skip_history_when_saving = True