summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py44
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