summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-30 19:56:07 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-30 19:56:07 +0200
commitd747bb7da4800b6956194fb4ead89ec73e0c84a9 (patch)
treea5e6bafb0471232cb0d67dc2deafcfa0a028f2fc /chimere/views.py
parent25d2888bc10e782e85e097aac8a0879a3c148cc7 (diff)
downloadChimère-d747bb7da4800b6956194fb4ead89ec73e0c84a9.tar.bz2
Chimère-d747bb7da4800b6956194fb4ead89ec73e0c84a9.zip
Add aggregated polygons
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/chimere/views.py b/chimere/views.py
index d4f3bb3..7274bf0 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -47,7 +47,7 @@ from django.views.generic import TemplateView, ListView
from chimere.actions import actions
from chimere.models import Category, SubCategory, PropertyModel, Page,\
Marker, Route, Polygon, SimpleArea, Area, Color, TinyUrl, RouteFile,\
- AggregatedRoute
+ AggregatedRoute, AggregatedPolygon
from chimere.widgets import PointChooserWidget, RouteChooserWidget, AreaWidget,\
PolygonChooserWidget
@@ -749,7 +749,8 @@ def checkDate(q):
def _getGeoObjects(area_name, category_ids, status='A', getjson=True,
- item_types=('Marker', 'Route', 'Polygon')):
+ aggregated=False, item_types=('Marker', 'Route',
+ 'Polygon')):
'''
Get geo objects
'''
@@ -780,12 +781,22 @@ def _getGeoObjects(area_name, category_ids, status='A', getjson=True,
return empty
category_ids = [int(cat_id) for cat_id in category_ids]
- if getjson:
- current_cat, colors, idx = None, None, 0
- items += Polygon.getGeoJSONs(
- query, limit_to_categories=category_ids)
+ if aggregated:
+ query = AggregatedPolygon.objects.filter(
+ status__in=status, subcategory__in=category_ids).order_by(
+ 'subcategory', '-pk')
+ if getjson:
+ for poly in query.all():
+ items.append(json.loads(poly.getGeoJSON()))
+ else:
+ items += list(query)
else:
- items += list(query)
+ if getjson:
+ current_cat, colors, idx = None, None, 0
+ items += Polygon.getGeoJSONs(
+ query, limit_to_categories=category_ids)
+ else:
+ items += list(query)
# routes
if 'Route' in item_types: