From aa37850f0145fe714edce46b9bf34a3b38a35535 Mon Sep 17 00:00:00 2001 From: Mattia Verga Date: Sat, 20 Jan 2024 13:25:24 +0100 Subject: [PATCH] Add list_releases endpoint Signed-off-by: Mattia Verga --- bodhi-server/bodhi/server/services/releases.py | 7 +++++++ bodhi-server/tests/services/test_releases.py | 3 +++ news/5587.feature | 1 + 3 files changed, 11 insertions(+) create mode 100644 news/5587.feature diff --git a/bodhi-server/bodhi/server/services/releases.py b/bodhi-server/bodhi/server/services/releases.py index 7a5b5bd9de..0829b719b0 100644 --- a/bodhi-server/bodhi/server/services/releases.py +++ b/bodhi-server/bodhi/server/services/releases.py @@ -59,6 +59,9 @@ # Note, this 'rw' is not a typo. The @releases service has # a ``post`` section at the bottom. cors_origins=bodhi.server.security.cors_origins_rw) +list_releases = Service(name='list_releases', path='/list_releases/', + description='Fedora Releases', + cors_origins=bodhi.server.security.cors_origins_ro) @release.get(accept="text/html", renderer="release.html", @@ -281,6 +284,10 @@ def get_update_counts(releaseid, stable_only: bool = False): "active": active} +@list_releases.get(accept=('application/json', 'text/json'), + schema=bodhi.server.schemas.ListReleaseSchema(), renderer='json', + error_handler=bodhi.server.services.errors.json_handler, + validators=releases_get_validators) @releases.get(accept=('application/json', 'text/json'), schema=bodhi.server.schemas.ListReleaseSchema(), renderer='json', error_handler=bodhi.server.services.errors.json_handler, diff --git a/bodhi-server/tests/services/test_releases.py b/bodhi-server/tests/services/test_releases.py index 9d54620667..ed06c56897 100644 --- a/bodhi-server/tests/services/test_releases.py +++ b/bodhi-server/tests/services/test_releases.py @@ -110,6 +110,9 @@ def test_list_releases(self): assert body['releases'][0]['name'] == 'F17' assert body['releases'][1]['name'] == 'F22' + res_list = self.app.get('/list_releases/') + assert res_list.json_body == body + def test_list_releases_with_pagination(self): res = self.app.get('/releases/') body = res.json_body diff --git a/news/5587.feature b/news/5587.feature new file mode 100644 index 0000000000..2a524ac936 --- /dev/null +++ b/news/5587.feature @@ -0,0 +1 @@ +A new `/list_releases/` GET endpoint is available to allow retrieving JSON data through ajax calls.