summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 36781249f..e985400be 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -23,7 +23,7 @@ from itertools import groupby
from django.conf import settings
from django.contrib.gis.db import models
from django.db.models import Q, Count, Sum, Max, Avg
-from django.db.models.signals import post_save
+from django.db.models.signals import post_save, m2m_changed
from django.utils.translation import ugettext_lazy as _, ugettext
from ishtar_common.models import GeneralType, BaseHistorizedItem, \
@@ -125,6 +125,8 @@ class Operation(BaseHistorizedItem, OwnPerms):
common_name = models.CharField(_(u"Generic name"), max_length=120,
null=True, blank=True)
comment = models.TextField(_(u"Comment"), null=True, blank=True)
+ cached_label = models.CharField(_(u"Cached name"), max_length=100,
+ null=True, blank=True)
history = HistoricalRecords()
class Meta:
@@ -139,13 +141,20 @@ class Operation(BaseHistorizedItem, OwnPerms):
)
def __unicode__(self):
+ if self.cached_label:
+ return self.cached_label
+ return self._generate_cached_label()
+
+ def _generate_cached_label(self):
items = [unicode(_('Intercommunal'))]
if self.towns.count() == 1:
items[0] = unicode(self.towns.all()[0])
if self.operation_code:
items.append("-".join((unicode(self.year),
unicode(self.operation_code))))
- return settings.JOINT.join(items)
+ self.cached_label = settings.JOINT.join(items)
+ self.save()
+ return self.cached_label
def grouped_parcels(self):
return Parcel.grouped_parcels(list(self.parcels.all()))
@@ -226,6 +235,12 @@ class Operation(BaseHistorizedItem, OwnPerms):
return {'date':item.history_date,
'user':IshtarUser.objects.get(pk=item.history_modifier_id)}
+def associated_towns_changed(sender, **kwargs):
+ if not kwargs.get('instance'):
+ return
+ kwargs.get('instance')._generate_cached_label()
+m2m_changed.connect(associated_towns_changed, sender=Operation.towns.through)
+
def operation_post_save(sender, **kwargs):
if not kwargs['instance']:
return