""" This module holds the base `SpatialBackend` object, which is instantiated by each spatial backend with the features it has. """ # TODO: Create a `Geometry` protocol and allow user to use # different Geometry objects -- for now we just use GEOSGeometry. from django.contrib.gis.geos import GEOSGeometry, GEOSException class BaseSpatialBackend(object): Geometry = GEOSGeometry GeometryException = GEOSException def __init__(self, **kwargs): kwargs.setdefault('distance_functions', {}) kwargs.setdefault('limited_where', {}) for k, v in kwargs.iteritems(): setattr(self, k, v) def __getattr__(self, name): """ All attributes of the spatial backend return False by default. """ try: return self.__dict__[name] except KeyError: return False