diff options
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r-- | archaeological_warehouse/models.py | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 389cc4f5a..57068f374 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -35,13 +35,19 @@ post_delete.connect(post_save_cache, sender=WarehouseType) class Warehouse(Address, OwnPerms): - name = models.CharField(_(u"Name"), max_length=40) + name = models.CharField(_(u"Name"), max_length=200) warehouse_type = models.ForeignKey(WarehouseType, verbose_name=_(u"Warehouse type")) person_in_charge = models.ForeignKey( Person, on_delete=models.SET_NULL, related_name='warehouse_in_charge', verbose_name=_(u"Person in charge"), null=True, blank=True) comment = models.TextField(_(u"Comment"), null=True, blank=True) + associated_divisions = models.ManyToManyField( + 'WarehouseDivision', verbose_name=_("Divisions"), blank=True, + through='WarehouseDivisionLink' + ) + + TABLE_COLS = ['name', 'warehouse_type'] class Meta: verbose_name = _(u"Warehouse") @@ -58,6 +64,23 @@ class Warehouse(Address, OwnPerms): return u"%s (%s)" % (self.name, unicode(self.warehouse_type)) +class WarehouseDivision(GeneralType): + class Meta: + verbose_name = _(u"Warehouse division") + verbose_name_plural = _(u"Warehouse divisions") + + +class WarehouseDivisionLink(models.Model): + RELATIVE_MODELS = {Warehouse: 'warehouse'} + warehouse = models.ForeignKey(Warehouse) + division = models.ForeignKey(WarehouseDivision) + order = models.IntegerField(_("Order"), default=10) + + class Meta: + ordering = ('warehouse', 'order') + unique_together = ('warehouse', 'division') + + class ContainerType(GeneralType): length = models.IntegerField(_(u"Length (mm)"), blank=True, null=True) width = models.IntegerField(_(u"Width (mm)"), blank=True, null=True) @@ -74,7 +97,7 @@ post_delete.connect(post_save_cache, sender=ContainerType) class Container(LightHistorizedItem): - TABLE_COLS = ['reference', 'container_type', 'location'] + TABLE_COLS = ['reference', 'container_type__label', 'location__name'] # search parameters EXTRA_REQUEST_KEYS = { @@ -98,3 +121,20 @@ class Container(LightHistorizedItem): lbl = u" - ".join((self.reference, unicode(self.container_type), unicode(self.location))) return lbl + + +class ContainerLocalisation(models.Model): + container = models.ForeignKey(Container, verbose_name=_(u"Container")) + division = models.ForeignKey(WarehouseDivisionLink, + verbose_name=_(u"Division")) + reference = models.CharField(_(u"Reference"), max_length=200, default='') + + class Meta: + verbose_name = _(u"Container localisation") + verbose_name_plural = _(u"Container localisations") + unique_together = ('container', 'division') + + def __unicode__(self): + lbl = u" - ".join((unicode(self.container), + unicode(self.division), self.reference)) + return lbl |