/django/contrib/gis/db/backends/util.py
https://code.google.com/p/mango-py/ · Python · 56 lines · 33 code · 7 blank · 16 comment · 3 complexity · baca56eb5a2eadf4da017f994ab14614 MD5 · raw file
- """
- A collection of utility routines and classes used by the spatial
- backends.
- """
- def gqn(val):
- """
- The geographic quote name function; used for quoting tables and
- geometries (they use single rather than the double quotes of the
- backend quotename function).
- """
- if isinstance(val, basestring):
- if isinstance(val, unicode): val = val.encode('ascii')
- return "'%s'" % val
- else:
- return str(val)
- class SpatialOperation(object):
- """
- Base class for generating spatial SQL.
- """
- sql_template = '%(geo_col)s %(operator)s %(geometry)s'
- def __init__(self, function='', operator='', result='', **kwargs):
- self.function = function
- self.operator = operator
- self.result = result
- self.extra = kwargs
- def as_sql(self, geo_col, geometry='%s'):
- return self.sql_template % self.params(geo_col, geometry)
- def params(self, geo_col, geometry):
- params = {'function' : self.function,
- 'geo_col' : geo_col,
- 'geometry' : geometry,
- 'operator' : self.operator,
- 'result' : self.result,
- }
- params.update(self.extra)
- return params
- class SpatialFunction(SpatialOperation):
- """
- Base class for generating spatial SQL related to a function.
- """
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s)'
- def __init__(self, func, result='', operator='', **kwargs):
- # Getting the function prefix.
- default = {'function' : func,
- 'operator' : operator,
- 'result' : result
- }
- kwargs.update(default)
- super(SpatialFunction, self).__init__(**kwargs)