Coverage for webapp/endpoints/invites.py: 78%
45 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-15 22:43 +0000
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-15 22:43 +0000
1# Packages
2import json
3import flask
4from canonicalwebteam.exceptions import (
5 StoreApiResponseErrorList,
6)
7from canonicalwebteam.store_api.dashboard import Dashboard
8from flask.json import jsonify
10# Local
11from webapp.decorators import login_required, exchange_required
12from webapp.helpers import api_session
14dashboard = Dashboard(api_session)
16invites = flask.Blueprint(
17 "invites",
18 __name__,
19)
22@invites.route("/api/store/<store_id>/invites")
23@login_required
24@exchange_required
25def get_invites(store_id):
26 invites = dashboard.get_store_invites(flask.session, store_id)
28 return jsonify(invites)
31@invites.route("/api/store/<store_id>/invite/update", methods=["POST"])
32@login_required
33@exchange_required
34def update_invite_status(store_id):
35 invites = json.loads(flask.request.form.get("invites"))
37 res = {}
39 try:
40 dashboard.update_store_invites(flask.session, store_id, invites)
41 res["msg"] = "Changes saved"
42 except StoreApiResponseErrorList as api_response_error_list:
43 msgs = [
44 f"{error.get('message', 'An error occurred')}"
45 for error in api_response_error_list.errors
46 ]
48 msgs = list(dict.fromkeys(msgs))
50 for msg in msgs:
51 flask.flash(msg, "negative")
53 return jsonify(res)
56@invites.route("/api/store/<store_id>/invite", methods=["POST"])
57@login_required
58@exchange_required
59def post_invite_members(store_id):
60 members = json.loads(flask.request.form.get("members"))
62 res = {}
64 try:
65 dashboard.invite_store_members(flask.session, store_id, members)
66 res["msg"] = "Changes saved"
67 except StoreApiResponseErrorList as api_response_error_list:
68 msgs = [
69 f"{error.get('message', 'An error occurred')}"
70 for error in api_response_error_list.errors
71 ]
73 msgs = list(dict.fromkeys(msgs))
75 for msg in msgs:
76 flask.flash(msg, "negative")
78 return jsonify(res)