summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-04-24 17:53:19 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-04-24 17:53:19 +0200
commit3258cb1c9b2d549e94380b082608f1840b59ca93 (patch)
tree9f4c25960482f4fe17d724185fa01621c9e849cc /chimere/views.py
parent74b6ca1e78cb6a38c82fb094af3e5fdbfffc1c5a (diff)
downloadChimère-3258cb1c9b2d549e94380b082608f1840b59ca93.tar.bz2
Chimère-3258cb1c9b2d549e94380b082608f1840b59ca93.zip
Group search result by categories
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/chimere/views.py b/chimere/views.py
index f6014b2..cdf9b42 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -1369,21 +1369,29 @@ class SearchView(FormView):
start = (page - 1) * self.results_per_page
end = page * self.results_per_page - 1
for model in [models.Marker, models.Route, models.Polygon]:
- if len(results) > end - len(results):
- continue
res, _has_next = model.search(
query, area=area, get_json=True,
- slice=[start, end],
check_next=True)
- if _has_next:
- has_next = True
- if res:
- if start:
- end = end - start
- start = 0
- end -= len(res)
results += res
- return results, has_next
+ duplicate_res = []
+ for r in results:
+ extra_icons = []
+ if 'extra_icons' in r['properties']:
+ extra_icons = r['properties']['extra_icons']
+ duplicate_res.append(r)
+ for extra_icon in extra_icons:
+ data = r.copy()
+ data['properties'] = r['properties'].copy()
+ data['properties'].update(extra_icon)
+ duplicate_res.append(data)
+ results = list(
+ sorted(duplicate_res,
+ key=lambda x: (x['properties']['category_name'],
+ x['properties']['name']))
+ )
+ if len(results) <= start:
+ return [], False
+ return results[start:end], len(results) > end
def get_context_data(self, **kwargs):
context = super(SearchView, self).get_context_data(**kwargs)