summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/management/commands/import_insee_comm_csv.py1
-rw-r--r--ishtar_common/models.py29
2 files changed, 27 insertions, 3 deletions
diff --git a/ishtar_common/management/commands/import_insee_comm_csv.py b/ishtar_common/management/commands/import_insee_comm_csv.py
index d0fccb2fc..97b680267 100644
--- a/ishtar_common/management/commands/import_insee_comm_csv.py
+++ b/ishtar_common/management/commands/import_insee_comm_csv.py
@@ -90,7 +90,6 @@ class Command(BaseCommand):
for town in linked:
if town.generate_geo():
nb_limit += 1
- town.save()
sys.stdout.write('\n* {} town created\n'.format(nb_created))
sys.stdout.write('* {} link created\n'.format(nb_link))
sys.stdout.write('* {} limit generated\n'.format(nb_limit))
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 36da56cad..5dd9ddee1 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -85,6 +85,8 @@ def post_save_user(sender, **kwargs):
except DatabaseError: # manage when db is not synced
pass
IshtarUser.set_superuser(user)
+
+
post_save.connect(post_save_user, sender=User)
@@ -2636,6 +2638,7 @@ class Source(OwnPerms, ImageModel, models.Model):
if getattr(self, attr)]
return slugify(u"-".join(values))
+
if settings.COUNTRY == 'fr':
class Arrondissement(models.Model):
name = models.CharField(u"Nom", max_length=30)
@@ -2689,6 +2692,10 @@ class Town(Imported, models.Model):
return self.cached_label
def generate_geo(self):
+ self.generate_limit()
+ self.generate_center()
+
+ def generate_limit(self):
if self.limit:
return
parents = None
@@ -2704,8 +2711,20 @@ class Town(Imported, models.Model):
# if union is a simple polygon make it a multi
if 'MULTI' not in parents.wkt:
parents = parents.wkt.replace('POLYGON', 'MULTIPOLYGON(') + ")"
+ if not parents:
+ return
self.limit = parents
- return self.limit
+ self.save()
+ return True
+
+ def generate_center(self):
+ if self.center or not self.limit:
+ return
+ self.center = self.limit.centroid
+ if not self.center:
+ return False
+ self.save()
+ return True
def _generate_cached_label(self):
cached_label = self.name
@@ -2716,7 +2735,13 @@ class Town(Imported, models.Model):
return cached_label
-post_save.connect(cached_label_changed, sender=Town)
+def post_save_town(sender, **kwargs):
+ cached_label_changed(sender, **kwargs)
+ town = kwargs['instance']
+ town.generate_geo()
+
+
+post_save.connect(post_save_town, sender=Town)
class OperationType(GeneralType):