Commit c3531d2f authored by Claude Paroz's avatar Claude Paroz
Browse files

Removed ability to pass a geometry string to GIS functions

This was a possible confusion source with column name arguments.
Thanks Sergey Fedoseev for the suggestion.
parent 24c1605a
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@ from decimal import Decimal

from django.contrib.gis.db.models.fields import GeometryField
from django.contrib.gis.db.models.sql import AreaField
from django.contrib.gis.geos.geometry import GEOSGeometry
from django.contrib.gis.measure import (
    Area as AreaMeasure, Distance as DistanceMeasure,
)
@@ -91,16 +90,9 @@ class GeomValue(Value):

class GeoFuncWithGeoParam(GeoFunc):
    def __init__(self, expression, geom, *expressions, **extra):
        if not hasattr(geom, 'srid'):
            # Try to interpret it as a geometry input
            try:
                geom = GEOSGeometry(geom)
            except Exception:
                raise ValueError("This function requires a geometric parameter.")
        if not geom.srid:
        if not hasattr(geom, 'srid') or not geom.srid:
            raise ValueError("Please provide a geometry attribute with a defined SRID.")
        geom = GeomValue(geom)
        super(GeoFuncWithGeoParam, self).__init__(expression, geom, *expressions, **extra)
        super(GeoFuncWithGeoParam, self).__init__(expression, GeomValue(geom), *expressions, **extra)


class SQLiteDecimalToFloatMixin(object):
+1 −3
Original line number Diff line number Diff line
@@ -516,9 +516,7 @@ class DistanceFunctionsTests(TestCase):
            dist_qs = [dist1]
        else:
            dist2 = SouthTexasCityFt.objects.annotate(distance=Distance('point', lagrange)).order_by('id')
            # Using EWKT string parameter.
            dist3 = SouthTexasCityFt.objects.annotate(distance=Distance('point', lagrange.ewkt)).order_by('id')
            dist_qs = [dist1, dist2, dist3]
            dist_qs = [dist1, dist2]

        # Original query done on PostGIS, have to adjust AlmostEqual tolerance
        # for Oracle.