From: Jeremy Cline Date: Tue, 15 Oct 2019 21:30:11 +0000 (-0400) Subject: Allow ordering events by date X-Git-Tag: v2.2.0-rc1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0f3220b3698fa3f9383b8c536a01f57cad8df15;p=thirdparty%2Fpatchwork.git Allow ordering events by date By default, the events API orders events by date in descending order (newest first). However, it's useful to be able to order the events by oldest events first. For example, when a client is polling the events API for new events since a given date and wishes to process them in chronological order. Signed-off-by: Jeremy Cline Reviewed-by: Stephen Finucane --- diff --git a/patchwork/api/event.py b/patchwork/api/event.py index c0d973d8..e6d467d1 100644 --- a/patchwork/api/event.py +++ b/patchwork/api/event.py @@ -77,7 +77,7 @@ class EventList(ListAPIView): serializer_class = EventSerializer filter_class = filterset_class = EventFilterSet page_size_query_param = None # fixed page size - ordering_fields = () + ordering_fields = ('date',) ordering = '-date' def get_queryset(self): diff --git a/patchwork/tests/api/test_event.py b/patchwork/tests/api/test_event.py index 8816538f..bff8f404 100644 --- a/patchwork/tests/api/test_event.py +++ b/patchwork/tests/api/test_event.py @@ -149,6 +149,24 @@ class TestEventAPI(utils.APITestCase): resp = self.client.get(self.api_url(), {'series': 999999}) self.assertEqual(0, len(resp.data)) + def test_order_by_date_default(self): + """Assert the default ordering is by date descending.""" + self._create_events() + + resp = self.client.get(self.api_url()) + events = Event.objects.order_by("-date").all() + for api_event, event in zip(resp.data, events): + self.assertEqual(api_event["id"], event.id) + + def test_order_by_date_ascending(self): + """Assert the default ordering is by date descending.""" + self._create_events() + + resp = self.client.get(self.api_url(), {'order': 'date'}) + events = Event.objects.order_by("date").all() + for api_event, event in zip(resp.data, events): + self.assertEqual(api_event["id"], event.id) + def test_create(self): """Ensure creates aren't allowed""" user = create_maintainer() diff --git a/releasenotes/notes/api-order-events-by-date-7484164761c5231b.yaml b/releasenotes/notes/api-order-events-by-date-7484164761c5231b.yaml new file mode 100644 index 00000000..5d5328d0 --- /dev/null +++ b/releasenotes/notes/api-order-events-by-date-7484164761c5231b.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Allow ordering events from the events API by date. This can be done by + adding ``order=date`` or ``order=-date`` (the default) parameters.