support pinned parameter in /api/v2/aliases
This commit is contained in:
parent
70cb0609d8
commit
4d1c4cfdff
|
@ -1,3 +1,4 @@
|
||||||
|
from deprecated import deprecated
|
||||||
from flanker.addresslib import address
|
from flanker.addresslib import address
|
||||||
from flanker.addresslib.address import EmailAddress
|
from flanker.addresslib.address import EmailAddress
|
||||||
from flask import g
|
from flask import g
|
||||||
|
@ -27,6 +28,7 @@ from app.models import Alias, Contact, Mailbox, AliasMailbox
|
||||||
from app.utils import sanitize_email
|
from app.utils import sanitize_email
|
||||||
|
|
||||||
|
|
||||||
|
@deprecated
|
||||||
@api_bp.route("/aliases", methods=["GET", "POST"])
|
@api_bp.route("/aliases", methods=["GET", "POST"])
|
||||||
@require_api_auth
|
@require_api_auth
|
||||||
def get_aliases():
|
def get_aliases():
|
||||||
|
@ -76,6 +78,7 @@ def get_aliases_v2():
|
||||||
Get aliases
|
Get aliases
|
||||||
Input:
|
Input:
|
||||||
page_id: in query
|
page_id: in query
|
||||||
|
pinned: in query
|
||||||
Output:
|
Output:
|
||||||
- aliases: list of alias:
|
- aliases: list of alias:
|
||||||
- id
|
- id
|
||||||
|
@ -106,13 +109,15 @@ def get_aliases_v2():
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
return jsonify(error="page_id must be provided in request query"), 400
|
return jsonify(error="page_id must be provided in request query"), 400
|
||||||
|
|
||||||
|
pinned = "pinned" in request.args
|
||||||
|
|
||||||
query = None
|
query = None
|
||||||
data = request.get_json(silent=True)
|
data = request.get_json(silent=True)
|
||||||
if data:
|
if data:
|
||||||
query = data.get("query")
|
query = data.get("query")
|
||||||
|
|
||||||
alias_infos: [AliasInfo] = get_alias_infos_with_pagination_v3(
|
alias_infos: [AliasInfo] = get_alias_infos_with_pagination_v3(
|
||||||
user, page_id=page_id, query=query
|
user, page_id=page_id, query=query, alias_filter="pinned" if pinned else None
|
||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -304,6 +304,7 @@ Input:
|
||||||
- `Authentication` header that contains the api key
|
- `Authentication` header that contains the api key
|
||||||
- `page_id` in query. Used for the pagination. The endpoint returns maximum 20 aliases for each page. `page_id` starts
|
- `page_id` in query. Used for the pagination. The endpoint returns maximum 20 aliases for each page. `page_id` starts
|
||||||
at 0.
|
at 0.
|
||||||
|
- (Optional) `pinned` in query. If set, only pinned aliases are returned.
|
||||||
- (Optional) query: included in request body. Some frameworks might prevent GET request having a non-empty body, in this
|
- (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.
|
case this endpoint also supports POST.
|
||||||
|
|
||||||
|
|
|
@ -180,6 +180,25 @@ def test_get_aliases_v2(flask_client):
|
||||||
assert "pinned" in r0
|
assert "pinned" in r0
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_pinned_aliases_v2(flask_client):
|
||||||
|
user = login(flask_client)
|
||||||
|
|
||||||
|
a0 = Alias.create_new(user, "prefix0")
|
||||||
|
a0.pinned = True
|
||||||
|
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&pinned=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):
|
def test_delete_alias(flask_client):
|
||||||
user = login(flask_client)
|
user = login(flask_client)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue