From 59c7ce2490fcc42fec1d856d979f2e611104ab6f Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Mon, 24 Mar 2014 15:07:09 -0400 Subject: [PATCH] Initial update for GeoDjango support --- queryset_transform/__init__.py | 14 +++++++++----- queryset_transform/geo.py | 13 +++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 queryset_transform/geo.py diff --git a/queryset_transform/__init__.py b/queryset_transform/__init__.py index 59cc5c3..3d30bc8 100644 --- a/queryset_transform/__init__.py +++ b/queryset_transform/__init__.py @@ -1,12 +1,12 @@ from django.db import models -class TransformQuerySet(models.query.QuerySet): +class TransformQuerySetMixin(object): def __init__(self, *args, **kwargs): - super(TransformQuerySet, self).__init__(*args, **kwargs) + super(TransformQuerySetMixin, self).__init__(*args, **kwargs) self._transform_fns = [] def _clone(self, klass=None, setup=False, **kw): - c = super(TransformQuerySet, self)._clone(klass, setup, **kw) + c = super(TransformQuerySetMixin, self)._clone(klass, setup, **kw) c._transform_fns = self._transform_fns[:] return c @@ -16,7 +16,7 @@ def transform(self, fn): return c def iterator(self): - result_iter = super(TransformQuerySet, self).iterator() + result_iter = super(TransformQuerySetMixin, self).iterator() if self._transform_fns: results = list(result_iter) for fn in self._transform_fns: @@ -24,7 +24,11 @@ def iterator(self): return iter(results) return result_iter -class TransformManager(models.Manager): +class TransformQuerySet(TransformQuerySetMixin, models.query.QuerySet): + pass + + +class TransformManager(models.Manager): def get_query_set(self): return TransformQuerySet(self.model) diff --git a/queryset_transform/geo.py b/queryset_transform/geo.py new file mode 100644 index 0000000..f5db9b4 --- /dev/null +++ b/queryset_transform/geo.py @@ -0,0 +1,13 @@ +from django.contrib.gis.db.models.manager import GeoManager +from django.contrib.gis.db.models.query import GeoQuerySet + +from . import TransformQuerySetMixin + + +class GeoTransformQuerySet(TransformQuerySetMixin, GeoQuerySet): + pass + + +class GeoTransformManager(GeoManager): + def get_query_set(self): + return GeoTransformQuerySet(self.model)