Coverage for webapp/endpoints/invites.py: 78%
45 statements
« prev ^ index » next coverage.py v7.10.5, created at 2025-08-26 22:06 +0000
« prev ^ index » next coverage.py v7.10.5, created at 2025-08-26 22:06 +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
15dashboard = Dashboard(api_session)
17invites = flask.Blueprint(
18 "invites",
19 __name__,
20)
23@invites.route("/api/store/<store_id>/invites")
24@login_required
25@exchange_required
26def get_invites(store_id):
27 invites = dashboard.get_store_invites(flask.session, store_id)
29 return jsonify(invites)
32@invites.route("/api/store/<store_id>/invite/update", methods=["POST"])
33@login_required
34@exchange_required
35def update_invite_status(store_id):
36 invites = json.loads(flask.request.form.get("invites"))
38 res = {}
40 try:
41 dashboard.update_store_invites(flask.session, store_id, invites)
42 res["msg"] = "Changes saved"
43 except StoreApiResponseErrorList as api_response_error_list:
44 msgs = [
45 f"{error.get('message', 'An error occurred')}"
46 for error in api_response_error_list.errors
47 ]
49 msgs = list(dict.fromkeys(msgs))
51 for msg in msgs:
52 flask.flash(msg, "negative")
54 return jsonify(res)
57@invites.route("/api/store/<store_id>/invite", methods=["POST"])
58@login_required
59@exchange_required
60def post_invite_members(store_id):
61 members = json.loads(flask.request.form.get("members"))
63 res = {}
65 try:
66 dashboard.invite_store_members(flask.session, store_id, members)
67 res["msg"] = "Changes saved"
68 except StoreApiResponseErrorList as api_response_error_list:
69 msgs = [
70 f"{error.get('message', 'An error occurred')}"
71 for error in api_response_error_list.errors
72 ]
74 msgs = list(dict.fromkeys(msgs))
76 for msg in msgs:
77 flask.flash(msg, "negative")
79 return jsonify(res)