diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/models.py | 7 | ||||
| -rw-r--r-- | ishtar_common/utils.py | 9 | 
2 files changed, 12 insertions, 4 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 28e469e31..9dd90de65 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3085,10 +3085,11 @@ class Town(Imported, models.Model):      def generate_area(self, force=False):          if not force and (self.surface or not self.limit):              return -        self.surface = self.limit.transform(settings.SURFACE_SRID, -                                            clone=True).area -        if not self.surface: +        surface = self.limit.transform(settings.SURFACE_SRID, +                                       clone=True).area +        if surface > 214748364 or not surface:              return False +        self.surface = surface          self.save()          return True diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index a263f3640..c9b53c5ee 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -499,8 +499,15 @@ def post_save_geo(sender, **kwargs):          current_source = unicode(instance.__class__._meta.verbose_name)      if instance.point_source_item and \              instance.point_source_item != current_source:  # refetch +        csrs = instance.spatial_reference_system + +        if instance.x and instance.y: +            new_point = GEOSGeometry( +                'POINT({} {})'.format(instance.x, instance.y), srid=csrs.srid) +            proj_point = instance.point_2d.transform(csrs.srid, clone=True) +            if new_point.distance(proj_point) < 0.0001: +                instance.x, instance.y = None, None          instance.point, instance.point_2d = None, None -        instance.x, instance.y = None, None          instance.point_source = None      point = instance.point  | 
