From 61bc1a72678dcf18283cc37db7b290ad90e50cd0 Mon Sep 17 00:00:00 2001 From: j Date: Sun, 8 Mar 2015 18:18:22 +0530 Subject: [PATCH] fix author sort --- oml/item/api.py | 9 ++++++++- oml/item/models.py | 4 ++-- oml/item/person.py | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/oml/item/api.py b/oml/item/api.py index 490089d..c9caa7e 100644 --- a/oml/item/api.py +++ b/oml/item/api.py @@ -12,6 +12,7 @@ from websocket import trigger_event import metaremote as meta from . import models from . import query +from .person import get_sort_name import settings import state import utils @@ -56,7 +57,13 @@ def find(data): else: g = [] if 'sort' in q: - g.sort(key=lambda k: k[q['sort'][0]['key']]) + 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': + return get_sort_name(k[q['sort'][0]['key']]) + else: + return k[q['sort'][0]['key']] + g.sort(key=_sort_key) if q['sort'][0]['operator'] == '-': g.reverse() state.cache.set(key, g) diff --git a/oml/item/models.py b/oml/item/models.py index 38e6509..f9a7794 100644 --- a/oml/item/models.py +++ b/oml/item/models.py @@ -135,11 +135,11 @@ class Item(db.Model): value = float(value) elif sort_type == 'date': pass - elif sort_type == 'name': + elif sort_type == 'person': if not isinstance(value, list): value = [value] value = list(map(get_sort_name, value)) - value = ox.sort_string('\n'.join(value)) + value = ox.sort_string('\n'.join(value)).lower() elif sort_type == 'title': if isinstance(value, dict): value = list(value.values()) diff --git a/oml/item/person.py b/oml/item/person.py index fae64d0..9ce9f4f 100644 --- a/oml/item/person.py +++ b/oml/item/person.py @@ -8,6 +8,7 @@ import ox import sqlalchemy as sa import db +import state def get_sort_name(name, sortname=None):