diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-31 18:16:11 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-31 18:16:11 +0100 |
commit | b98bfcfe20c9af59f69b7606c0351b4bbf344d00 (patch) | |
tree | 5da5ddd928f4bdf9eff103e13f6c72d08747899f /ishtar_common/models.py | |
parent | 289e153c64ba5c8a87ed60fa1f8f2e7ef9634c78 (diff) | |
parent | 1c17748090f59acb36883ac114fb9cefdab47963 (diff) | |
download | Ishtar-b98bfcfe20c9af59f69b7606c0351b4bbf344d00.tar.bz2 Ishtar-b98bfcfe20c9af59f69b7606c0351b4bbf344d00.zip |
Merge branch 'develop' into develop-bootstrap
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 14869e2a5..678564dda 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -44,7 +44,7 @@ from django.core.validators import validate_slug from django.core.urlresolvers import reverse, NoReverseMatch from django.db.utils import DatabaseError from django.db.models import Q, Max, Count -from django.db.models.signals import post_save, post_delete +from django.db.models.signals import post_save, post_delete, m2m_changed from django.utils.functional import lazy from django.utils.translation import ugettext_lazy as _ @@ -2668,10 +2668,10 @@ class Town(Imported, models.Model): center = models.PointField(_(u"Localisation"), srid=settings.SRID, blank=True, null=True) limit = models.MultiPolygonField(_(u"Limit"), blank=True, null=True) - if settings.COUNTRY == 'fr': - numero_insee = models.CharField(u"Numéro INSEE", max_length=6) - departement = models.ForeignKey( - Department, verbose_name=u"Département", null=True, blank=True) + numero_insee = models.CharField(u"Code commune (numéro INSEE)", + max_length=120) + departement = models.ForeignKey( + Department, verbose_name=_(u"Department"), null=True, blank=True) year = models.IntegerField( _("Year of creation"), null=True, blank=True, help_text=_(u"Filling this field is relevant to distinguish old towns " @@ -2745,6 +2745,15 @@ class Town(Imported, models.Model): self.save() return True + def update_town_code(self): + if not self.numero_insee or not self.children.count() or not self.year: + return + old_num = self.numero_insee[:] + numero = old_num.split('-')[0] + self.numero_insee = u"{}-{}".format(numero, self.year) + if self.numero_insee != old_num: + return True + def _generate_cached_label(self): cached_label = self.name if settings.COUNTRY == "fr": @@ -2758,11 +2767,22 @@ def post_save_town(sender, **kwargs): cached_label_changed(sender, **kwargs) town = kwargs['instance'] town.generate_geo() + if town.update_town_code(): + town.save() post_save.connect(post_save_town, sender=Town) +def town_child_changed(sender, **kwargs): + town = kwargs['instance'] + if town.update_town_code(): + town.save() + + +m2m_changed.connect(town_child_changed, sender=Town.children.through) + + class OperationType(GeneralType): order = models.IntegerField(_(u"Order"), default=1) preventive = models.BooleanField(_(u"Is preventive"), default=True) |