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 | 
