From 32d603330123923781f4316475a5ebbd96d0978b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 6 Dec 2016 22:48:07 +0100 Subject: [PATCH] cache GeometryMapItem.to_geojson() --- src/c3nav/mapdata/models/geometry.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/c3nav/mapdata/models/geometry.py b/src/c3nav/mapdata/models/geometry.py index 72ce8098..a950efd2 100644 --- a/src/c3nav/mapdata/models/geometry.py +++ b/src/c3nav/mapdata/models/geometry.py @@ -1,5 +1,6 @@ from collections import OrderedDict +from django.conf import settings from django.db import models from django.utils.translation import ugettext_lazy as _ from shapely.geometry.geo import mapping, shape @@ -25,6 +26,7 @@ class GeometryMapItem(MapItem, metaclass=GeometryMapItemMeta): A map feature """ geometry = GeometryField() + cached_geojson = {} geomtype = None @@ -62,6 +64,14 @@ class GeometryMapItem(MapItem, metaclass=GeometryMapItemMeta): )) def to_geojson(self): + if settings.DIRECT_EDITING: + return self._to_geojson() + key = (self.__class__, self.name) + if key not in self.cached_geojson: + self.cached_geojson[key] = self._to_geojson() + return self.cached_geojson[key] + + def _to_geojson(self): return [OrderedDict(( ('type', 'Feature'), ('properties', self.get_geojson_properties()),