From 171834bd1259addb6e3c90b9d7281b47d7626633 Mon Sep 17 00:00:00 2001 From: j Date: Mon, 18 Jan 2016 16:22:29 +0530 Subject: [PATCH] use secondary sort in filters, fixes #21 --- oml/item/api.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/oml/item/api.py b/oml/item/api.py index 0da8a2b..c2073ea 100644 --- a/oml/item/api.py +++ b/oml/item/api.py @@ -64,14 +64,22 @@ def find(data): if 'sort' in q: sort_type = utils.get_by_id(settings.config['itemKeys'], q['group']).get('sortType') def _sort_key(k): - if sort_type == 'person' and q['sort'][0]['key'] == 'name': - v = get_sort_name(k[q['sort'][0]['key']]) + if sort_type == 'person': + name = get_sort_name(k['name']) else: - v = k[q['sort'][0]['key']] - if isinstance(v, str): - v = unicodedata.normalize('NFKD', v).lower() + name = k['name'] + if isinstance(name, str): + name = unicodedata.normalize('NFKD', name).lower() + items = k['items'] + if q['sort'][0]['key'] == 'name': + v = (name, items) + else: + v = (-items, name) return v - g.sort(key=_sort_key, reverse=q['sort'][0]['operator'] == '-') + reverse = q['sort'][0]['operator'] == '-' + if q['sort'][0]['key'] == 'items': + reverse = not reverse + g.sort(key=_sort_key, reverse=reverse) state.cache.set(key, g) if 'positions' in data: response['positions'] = {}