From 58b332b7bcee0f303baaaec68dc356dac97291ee Mon Sep 17 00:00:00 2001 From: Son Date: Mon, 25 Apr 2022 09:22:29 +0200 Subject: [PATCH] add new parameter disabled in /GET /api/v2/aliases --- app/api/views/alias.py | 11 ++++++++++- docs/api.md | 2 ++ tests/api/test_alias.py | 19 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/api/views/alias.py b/app/api/views/alias.py index cff85601..bc9bbd88 100644 --- a/app/api/views/alias.py +++ b/app/api/views/alias.py @@ -79,6 +79,7 @@ def get_aliases_v2(): Input: page_id: in query pinned: in query + disabled: in query Output: - aliases: list of alias: - id @@ -110,6 +111,14 @@ def get_aliases_v2(): return jsonify(error="page_id must be provided in request query"), 400 pinned = "pinned" in request.args + disabled = "disabled" in request.args + + if pinned: + alias_filter = "pinned" + elif disabled: + alias_filter = "disabled" + else: + alias_filter = None query = None data = request.get_json(silent=True) @@ -117,7 +126,7 @@ def get_aliases_v2(): query = data.get("query") alias_infos: [AliasInfo] = get_alias_infos_with_pagination_v3( - user, page_id=page_id, query=query, alias_filter="pinned" if pinned else None + user, page_id=page_id, query=query, alias_filter=alias_filter ) return ( diff --git a/docs/api.md b/docs/api.md index a5332a83..95609a29 100644 --- a/docs/api.md +++ b/docs/api.md @@ -312,6 +312,8 @@ Input: - `page_id` in query. Used for the pagination. The endpoint returns maximum 20 aliases for each page. `page_id` starts at 0. - (Optional) `pinned` in query. If set, only pinned aliases are returned. +- (Optional) `disabled` in query. If set, only disabled aliases are returned. + Please note `pinned` and `disabled` can't be both present. - (Optional) query: included in request body. Some frameworks might prevent GET request having a non-empty body, in this case this endpoint also supports POST. diff --git a/tests/api/test_alias.py b/tests/api/test_alias.py index c4dcf36c..383b244d 100644 --- a/tests/api/test_alias.py +++ b/tests/api/test_alias.py @@ -195,6 +195,25 @@ def test_get_pinned_aliases_v2(flask_client): assert r.json["aliases"][0]["id"] == a0.id +def test_get_disabled_aliases_v2(flask_client): + user = login(flask_client) + + a0 = Alias.create_new(user, "prefix0") + a0.enabled = False + Session.commit() + + r = flask_client.get("/api/v2/aliases?page_id=0") + assert r.status_code == 200 + # the default alias (created when user is created) and a0 are returned + assert len(r.json["aliases"]) == 2 + + r = flask_client.get("/api/v2/aliases?page_id=0&disabled=true") + assert r.status_code == 200 + # only a0 is returned + assert len(r.json["aliases"]) == 1 + assert r.json["aliases"][0]["id"] == a0.id + + def test_delete_alias(flask_client): user = login(flask_client)