summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-22 12:46:24 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-12-22 12:46:24 +0100
commit7f1d9db82a29af007715eb786cc736277041704e (patch)
treede97ca38038965b23760ba2034c2327ccf23e671 /archaeological_warehouse/models.py
parentb1c94c5f5949ba5514a95918187b223c78d4b986 (diff)
downloadIshtar-7f1d9db82a29af007715eb786cc736277041704e.tar.bz2
Ishtar-7f1d9db82a29af007715eb786cc736277041704e.zip
Manage cached_label for treatments - display full label in finds tables (refs #3395)
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py30
1 files changed, 26 insertions, 4 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 0eb19814d..0996a10e8 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -19,11 +19,14 @@
import datetime
+from django.conf import settings
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.utils import cached_label_changed
+
from ishtar_common.models import GeneralType, \
LightHistorizedItem, OwnPerms, Address, Person, post_save_cache
@@ -72,6 +75,11 @@ class Warehouse(Address, OwnPerms):
return datetime.date.today().strftime('%Y-%m-%d') + '-' + \
slugify(unicode(self))
+ def save(self, *args, **kwargs):
+ super(Warehouse, self).save(*args, **kwargs)
+ for container in self.containers.all():
+ cached_label_changed(Container, {'instance': container})
+
class WarehouseDivision(GeneralType):
class Meta:
@@ -128,16 +136,24 @@ class Container(LightHistorizedItem):
verbose_name=_("Container type"))
reference = models.CharField(_(u"Container ref."), max_length=40)
comment = models.TextField(_(u"Comment"))
+ cached_label = models.CharField(_(u"Cached name"), max_length=500,
+ null=True, blank=True)
class Meta:
verbose_name = _(u"Container")
verbose_name_plural = _(u"Containers")
+ ordering = ('cached_label',)
def __unicode__(self):
lbl = u" - ".join((self.reference, unicode(self.container_type),
unicode(self.location)))
return lbl
+ def _generate_cached_label(self):
+ items = [self.reference, self.precise_location]
+ cached_label = u" | ".join(items)
+ return cached_label
+
@property
def associated_filename(self):
return datetime.date.today().strftime('%Y-%m-%d') + '-' + \
@@ -149,11 +165,13 @@ class Container(LightHistorizedItem):
def precise_location(self):
location = unicode(self.location)
locas = [
- u"{} {}".format(loca.division.division, loca.reference)
- for loca in ContainerLocalisation.objects.filter(
- container=self)
+ u"{} {}".format(loca.division.division, loca.reference)
+ for loca in ContainerLocalisation.objects.filter(
+ container=self)
]
- return location + u" - " + u", ".join(locas)
+ return location + u" | " + u", ".join(locas)
+
+post_save.connect(cached_label_changed, sender=Container)
class ContainerLocalisation(models.Model):
@@ -172,3 +190,7 @@ class ContainerLocalisation(models.Model):
lbl = u" - ".join((unicode(self.container),
unicode(self.division), self.reference))
return lbl
+
+ def save(self, *args, **kwargs):
+ super(ContainerLocalisation, self).save(*args, **kwargs)
+ cached_label_changed(Container, {'instance': self.container})