From 9a538f825547193815e1661f4534ec7d03b5c6d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 10 Oct 2017 17:49:30 +0200 Subject: [PATCH] GeometryManager with within --- src/c3nav/mapdata/models/geometry/base.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/c3nav/mapdata/models/geometry/base.py b/src/c3nav/mapdata/models/geometry/base.py index 42b4b265..9d5dc950 100644 --- a/src/c3nav/mapdata/models/geometry/base.py +++ b/src/c3nav/mapdata/models/geometry/base.py @@ -8,6 +8,11 @@ from c3nav.mapdata.models.base import SerializableMixin from c3nav.mapdata.utils.json import format_geojson +class GeometryManager(models.Manager): + def within(self, minx, miny, maxx, maxy): + return self.get_queryset().filter(minx__lte=maxx, maxx__gte=minx, miny__lte=maxy, maxy__gte=miny) + + class GeometryMixin(SerializableMixin): """ A map feature with a geometry @@ -17,9 +22,11 @@ class GeometryMixin(SerializableMixin): miny = models.DecimalField(_('min y coordinate'), max_digits=6, decimal_places=2, db_index=True) maxx = models.DecimalField(_('max x coordinate'), max_digits=6, decimal_places=2, db_index=True) maxy = models.DecimalField(_('max y coordinate'), max_digits=6, decimal_places=2, db_index=True) + objects = GeometryManager() class Meta: abstract = True + base_manager_name = 'objects' def get_geojson_properties(self, *args, **kwargs) -> dict: result = OrderedDict((