Fixed #25524 -- Removed GISOperations.get_distance()'s handle_spheroid param.

This commit is contained in:
Tim Graham 2017-02-11 05:47:20 -05:00 committed by GitHub
parent d4b00c5c24
commit 0166dd2f8c
4 changed files with 5 additions and 14 deletions

View File

@ -191,7 +191,7 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
""" """
return 'MDSYS.SDO_GEOMETRY' return 'MDSYS.SDO_GEOMETRY'
def get_distance(self, f, value, lookup_type, **kwargs): def get_distance(self, f, value, lookup_type):
""" """
Return the distance parameters given the value and the lookup type. Return the distance parameters given the value and the lookup type.
On Oracle, geometry columns with a geodetic coordinate system behave On Oracle, geometry columns with a geodetic coordinate system behave

View File

@ -285,7 +285,7 @@ class PostGISOperations(BaseSpatialOperations, DatabaseOperations):
else: else:
return 'geometry(%s,%d)' % (geom_type, f.srid) return 'geometry(%s,%d)' % (geom_type, f.srid)
def get_distance(self, f, dist_val, lookup_type, handle_spheroid=True): def get_distance(self, f, dist_val, lookup_type):
""" """
Retrieve the distance parameters for the given geometry field, Retrieve the distance parameters for the given geometry field,
distance lookup value, and the distance lookup type. distance lookup value, and the distance lookup type.
@ -316,16 +316,7 @@ class PostGISOperations(BaseSpatialOperations, DatabaseOperations):
# Assuming the distance is in the units of the field. # Assuming the distance is in the units of the field.
dist_param = value dist_param = value
params = [dist_param] return [dist_param]
# handle_spheroid *might* be dropped in Django 2.0 as PostGISDistanceOperator
# also handles it (#25524).
if handle_spheroid and len(dist_val) > 1:
option = dist_val[1]
if not geography and geodetic and lookup_type != 'dwithin' and option == 'spheroid':
# using distance_spheroid requires the spheroid of the field as
# a parameter.
params.insert(0, f._spheroid)
return params
def get_geom_placeholder(self, f, value, compiler): def get_geom_placeholder(self, f, value, compiler):
""" """

View File

@ -150,7 +150,7 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
""" """
return None return None
def get_distance(self, f, value, lookup_type, **kwargs): def get_distance(self, f, value, lookup_type):
""" """
Return the distance parameters for the given geometry field, Return the distance parameters for the given geometry field,
lookup value, and lookup type. lookup value, and lookup type.

View File

@ -436,7 +436,7 @@ class DistanceLookupBase(GISLookup):
else: else:
params += connection.ops.get_distance( params += connection.ops.get_distance(
self.lhs.output_field, (dist_param,) + self.rhs[2:], self.lhs.output_field, (dist_param,) + self.rhs[2:],
self.lookup_name, handle_spheroid=False self.lookup_name,
) )
rhs = connection.ops.get_geom_placeholder(self.lhs.output_field, params[0], compiler) rhs = connection.ops.get_geom_placeholder(self.lhs.output_field, params[0], compiler)
return (rhs, params) return (rhs, params)