summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-13 15:57:30 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-13 15:57:30 +0200
commit6b9856c9264bf26ee853bf570387a7b5ea949a9f (patch)
tree091340fc1430f7c13433661a778ea46b1ef2ac5b /chimere/views.py
parent990493bf4ceaf7aa3e9ce79635799bc1c6b20679 (diff)
downloadChimère-6b9856c9264bf26ee853bf570387a7b5ea949a9f.tar.bz2
Chimère-6b9856c9264bf26ee853bf570387a7b5ea949a9f.zip
Optimize polygon retrievement in database
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py28
1 files changed, 2 insertions, 26 deletions
diff --git a/chimere/views.py b/chimere/views.py
index 5fd50cd..796aca3 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -717,32 +717,8 @@ def _getGeoObjects(area_name, category_ids, status='A', getjson=True,
category_ids = [int(cat_id) for cat_id in category_ids]
if getjson:
current_cat, colors, idx = None, None, 0
- for polygon in query.all():
- color, inner_color = "", ""
- if polygon.inner_color:
- inner_color = polygon.inner_color
- if polygon.color:
- color = polygon.color
- else:
- c_cat = None
- for cat in polygon.categories.all():
- if cat.id in category_ids:
- c_cat = cat
- break
- if c_cat and not current_cat or current_cat != c_cat:
- idx = 0
- current_cat = c_cat
- colors = list(Color.objects.filter(
- color_theme=c_cat.color_theme))
- if colors:
- color = colors[idx % len(colors)].code
- idx += 1
- else:
- color = "#000"
- if not inner_color:
- inner_color = "rgba(180, 180, 180, 0.3)"
- items.append(json.loads(polygon.getGeoJSON(
- color=color, inner_color=inner_color)))
+ items += Polygon.getGeoJSONs(
+ query, limit_to_categories=category_ids)
else:
items += list(query)