diff options
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r-- | archaeological_warehouse/models.py | 24 |
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 |