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 | f0b19816e955bacd970a488031fcaa1c6930ce13 (patch) | |
| tree | 51c9da43fd459fffc35f004f8556a616853205d8 /ishtar_common/models.py | |
| parent | 3ee4a92f5718c0ea64a689ba0a309b63e51a0183 (diff) | |
| download | Ishtar-f0b19816e955bacd970a488031fcaa1c6930ce13.tar.bz2 Ishtar-f0b19816e955bacd970a488031fcaa1c6930ce13.zip | |
Town: generate geo field on save
Diffstat (limited to 'ishtar_common/models.py')
| -rw-r--r-- | ishtar_common/models.py | 29 | 
1 files changed, 27 insertions, 2 deletions
| 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): | 
