summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-10-30 17:52:39 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-10-30 17:52:39 +0100
commit33327ca3d6aed50a7707a9c3a54e5c424edbe56c (patch)
tree7c4f9109478ae74a408c63df383d01305ee45b9b /ishtar_common/models.py
parentd31a964fa2f4d7e68bf6bb6c1a4c3ed65df6c08c (diff)
downloadIshtar-33327ca3d6aed50a7707a9c3a54e5c424edbe56c.tar.bz2
Ishtar-33327ca3d6aed50a7707a9c3a54e5c424edbe56c.zip
Town: alter insee code for old towns
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py30
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)