You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

utils.py 784B

123456789101112131415161718192021222324252627
  1. """
  2. A collection of utility routines and classes used by the spatial
  3. backends.
  4. """
  5. class SpatialOperator:
  6. """
  7. Class encapsulating the behavior specific to a GIS operation (used by lookups).
  8. """
  9. sql_template = None
  10. def __init__(self, op=None, func=None):
  11. self.op = op
  12. self.func = func
  13. @property
  14. def default_template(self):
  15. if self.func:
  16. return '%(func)s(%(lhs)s, %(rhs)s)'
  17. else:
  18. return '%(lhs)s %(op)s %(rhs)s'
  19. def as_sql(self, connection, lookup, template_params, sql_params):
  20. sql_template = self.sql_template or lookup.sql_template or self.default_template
  21. template_params.update({'op': self.op, 'func': self.func})
  22. return sql_template % template_params, sql_params