diff options
Diffstat (limited to 'archaeological_warehouse/models.py')
| -rw-r--r-- | archaeological_warehouse/models.py | 38 | 
1 files changed, 36 insertions, 2 deletions
| diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 57068f374..0872df220 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -17,8 +17,11 @@  # See the file COPYING for details. -from django.db.models.signals import post_save, post_delete +import datetime +  from django.contrib.gis.db import models +from django.db.models.signals import post_save, post_delete +from django.template.defaultfilters import slugify  from django.utils.translation import ugettext_lazy as _, ugettext  from ishtar_common.models import GeneralType, \ @@ -35,6 +38,7 @@ post_delete.connect(post_save_cache, sender=WarehouseType)  class Warehouse(Address, OwnPerms): +    SHOW_URL = 'show-warehouse'      name = models.CharField(_(u"Name"), max_length=200)      warehouse_type = models.ForeignKey(WarehouseType,                                         verbose_name=_(u"Warehouse type")) @@ -63,11 +67,18 @@ class Warehouse(Address, OwnPerms):      def __unicode__(self):          return u"%s (%s)" % (self.name, unicode(self.warehouse_type)) +    @property +    def associated_filename(self): +        return datetime.date.today().strftime('%Y-%m-%d') + '-' + \ +               slugify(unicode(self)) +  class WarehouseDivision(GeneralType):      class Meta:          verbose_name = _(u"Warehouse division")          verbose_name_plural = _(u"Warehouse divisions") +post_save.connect(post_save_cache, sender=WarehouseDivision) +post_delete.connect(post_save_cache, sender=WarehouseDivision)  class WarehouseDivisionLink(models.Model): @@ -80,6 +91,9 @@ class WarehouseDivisionLink(models.Model):          ordering = ('warehouse', 'order')          unique_together = ('warehouse', 'division') +    def __unicode__(self): +        return u"{} - {}".format(self.warehouse, self.division) +  class ContainerType(GeneralType):      length = models.IntegerField(_(u"Length (mm)"), blank=True, null=True) @@ -105,9 +119,11 @@ class Container(LightHistorizedItem):          'container_type': 'container_type__pk',          'reference': 'reference__icontains',      } +    SHOW_URL = 'show-container'      # fields -    location = models.ForeignKey(Warehouse, verbose_name=_(u"Warehouse")) +    location = models.ForeignKey(Warehouse, verbose_name=_(u"Warehouse"), +                                 related_name='containers')      container_type = models.ForeignKey(ContainerType,                                         verbose_name=_("Container type"))      reference = models.CharField(_(u"Container ref."), max_length=40) @@ -122,6 +138,23 @@ class Container(LightHistorizedItem):                             unicode(self.location)))          return lbl +    @property +    def associated_filename(self): +        return datetime.date.today().strftime('%Y-%m-%d') + '-' + \ +            "-".join([str(slugify(getattr(self, attr))) +                      for attr in ('location', 'container_type', +                                   'reference')]) + +    @property +    def precise_location(self): +        location = unicode(self.location) +        locas = [ +            u"{} {}".format(loca.division.division, loca.reference) +            for loca in ContainerLocalisation.objects.filter( +                container=self) +        ] +        return location + u" - " + u", ".join(locas) +  class ContainerLocalisation(models.Model):      container = models.ForeignKey(Container, verbose_name=_(u"Container")) @@ -133,6 +166,7 @@ class ContainerLocalisation(models.Model):          verbose_name = _(u"Container localisation")          verbose_name_plural = _(u"Container localisations")          unique_together = ('container', 'division') +        ordering = ('container', 'division__order')      def __unicode__(self):          lbl = u" - ".join((unicode(self.container), | 
