diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-28 15:57:49 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-28 15:57:49 +0200 |
commit | f793507ea489b2bb27eefa92bb1ec49c7d157967 (patch) | |
tree | 51c9da43fd459fffc35f004f8556a616853205d8 /ishtar_common | |
parent | 1f649a7c5e185ce6c707626e4675d075c313d9de (diff) | |
download | Ishtar-f793507ea489b2bb27eefa92bb1ec49c7d157967.tar.bz2 Ishtar-f793507ea489b2bb27eefa92bb1ec49c7d157967.zip |
Town: generate geo field on save
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/management/commands/import_insee_comm_csv.py | 1 | ||||
-rw-r--r-- | ishtar_common/models.py | 29 |
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): |