diff options
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r-- | archaeological_operations/models.py | 19 |
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 |