From 35d848401e147553a252ee8f65c7440cd0e39c9d Mon Sep 17 00:00:00 2001 From: sonny Date: Wed, 3 Jun 2020 20:30:30 +0200 Subject: [PATCH] Update post ordering for categories By (descending) publication and rule name --- .../js/pages/homepage/components/feedlist/filters.js | 6 +++++- src/newsreader/news/core/endpoints.py | 2 +- .../news/core/tests/endpoints/category/list/tests.py | 9 ++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/newsreader/js/pages/homepage/components/feedlist/filters.js b/src/newsreader/js/pages/homepage/components/feedlist/filters.js index 95b8b41..59fd665 100644 --- a/src/newsreader/js/pages/homepage/components/feedlist/filters.js +++ b/src/newsreader/js/pages/homepage/components/feedlist/filters.js @@ -27,7 +27,11 @@ export const filterPostsByCategory = (category = {}, rules = [], posts = []) => return filteredPosts.map(post => ({ ...post, rule: { ...rule } })); }); - return filteredData.length > 0 ? [...filteredData.flat()] : []; + const sortedPosts = [...filteredData.flat()].sort((firstPost, secondPost) => { + return new Date(secondPost.publicationDate) - new Date(firstPost.publicationDate); + }); + + return sortedPosts; }; export const filterPosts = state => { diff --git a/src/newsreader/news/core/endpoints.py b/src/newsreader/news/core/endpoints.py index acc4ab2..f5a48bc 100644 --- a/src/newsreader/news/core/endpoints.py +++ b/src/newsreader/news/core/endpoints.py @@ -92,7 +92,7 @@ class NestedPostCategoryView(ListAPIView): queryset = Post.objects.filter( rule__in=category.rules.values_list("id", flat=True) - ).order_by("rule", "-publication_date") + ).order_by("-publication_date", "rule__name") return queryset diff --git a/src/newsreader/news/core/tests/endpoints/category/list/tests.py b/src/newsreader/news/core/tests/endpoints/category/list/tests.py index aedd5e1..4d5f0e6 100644 --- a/src/newsreader/news/core/tests/endpoints/category/list/tests.py +++ b/src/newsreader/news/core/tests/endpoints/category/list/tests.py @@ -498,13 +498,12 @@ class NestedCategoryPostView(TestCase): self.assertEquals(data["count"], 6) self.assertEquals(posts[0]["title"], "Second BBC post") - self.assertEquals(posts[1]["title"], "First BBC post") - + self.assertEquals(posts[1]["title"], "Second Reuters post") self.assertEquals(posts[2]["title"], "Second Guardian post") - self.assertEquals(posts[3]["title"], "First Guardian post") - self.assertEquals(posts[4]["title"], "Second Reuters post") - self.assertEquals(posts[5]["title"], "First Reuters post") + self.assertEquals(posts[3]["title"], "First BBC post") + self.assertEquals(posts[4]["title"], "First Reuters post") + self.assertEquals(posts[5]["title"], "First Guardian post") def test_only_posts_from_category_are_returned(self): category = CategoryFactory.create(user=self.user)