From 9d8454964ea4e79066901cdc16785e5d4c1a63ef Mon Sep 17 00:00:00 2001 From: Nigel Babu Date: Fri, 20 Dec 2013 15:01:49 +0530 Subject: [PATCH] Fix test failures associted with related_list The related_list dictization changes returned them as returned by the database. This change gives it a default order if they're not previously sorted. --- ckan/lib/dictization/model_dictize.py | 5 +++-- ckan/logic/action/get.py | 1 + ckan/tests/functional/test_related.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ckan/lib/dictization/model_dictize.py b/ckan/lib/dictization/model_dictize.py index 59f9bc97cb4..ce0f4df75ab 100644 --- a/ckan/lib/dictization/model_dictize.py +++ b/ckan/lib/dictization/model_dictize.py @@ -90,8 +90,9 @@ def related_list_dictize(related_list, context): for res in related_list: related_dict = related_dictize(res, context) result_list.append(related_dict) - - return result_list + if context.get('sorted'): + return result_list + return sorted(result_list, key=lambda x: x["created"], reverse=True) def extras_dict_dictize(extras_dict, context): diff --git a/ckan/logic/action/get.py b/ckan/logic/action/get.py index 91aa1aee3f4..03f99888fd8 100644 --- a/ckan/logic/action/get.py +++ b/ckan/logic/action/get.py @@ -263,6 +263,7 @@ def related_list(context, data_dict=None): if data_dict.get('featured', False): related_list = related_list.filter(model.Related.featured == 1) related_items = related_list.all() + context['sorted'] = True else: relateds = model.Related.get_for_dataset(dataset, status='active') related_items = (r.related for r in relateds) diff --git a/ckan/tests/functional/test_related.py b/ckan/tests/functional/test_related.py index 78085b24a11..9e65917fb2a 100644 --- a/ckan/tests/functional/test_related.py +++ b/ckan/tests/functional/test_related.py @@ -467,7 +467,7 @@ def test_api_list(self): r = json.loads(res.body) assert r['success'] == True, r assert r['result'][0]['type'] == "idea" - assert r['result'][0]['title'] == "one", r + assert r['result'][0]['title'] == "two", r p.related.remove(one) p.related.remove(two)