2009-03-31 01:15:49 +08:00
|
|
|
"""
|
|
|
|
A collection of utility routines and classes used by the spatial
|
|
|
|
backends.
|
|
|
|
"""
|
|
|
|
|
2013-11-03 01:18:46 +08:00
|
|
|
|
2017-01-19 15:39:46 +08:00
|
|
|
class SpatialOperator:
|
2008-08-06 02:13:06 +08:00
|
|
|
"""
|
2014-05-23 03:51:30 +08:00
|
|
|
Class encapsulating the behavior specific to a GIS operation (used by lookups).
|
2008-08-06 02:13:06 +08:00
|
|
|
"""
|
2014-05-23 03:51:30 +08:00
|
|
|
sql_template = None
|
|
|
|
|
|
|
|
def __init__(self, op=None, func=None):
|
|
|
|
self.op = op
|
|
|
|
self.func = func
|
|
|
|
|
|
|
|
@property
|
|
|
|
def default_template(self):
|
|
|
|
if self.func:
|
|
|
|
return '%(func)s(%(lhs)s, %(rhs)s)'
|
|
|
|
else:
|
|
|
|
return '%(lhs)s %(op)s %(rhs)s'
|
|
|
|
|
|
|
|
def as_sql(self, connection, lookup, template_params, sql_params):
|
|
|
|
sql_template = self.sql_template or lookup.sql_template or self.default_template
|
|
|
|
template_params.update({'op': self.op, 'func': self.func})
|
|
|
|
return sql_template % template_params, sql_params
|