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

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 

9 

10# Local 

11from webapp.decorators import login_required, exchange_required 

12from webapp.helpers import api_session 

13 

14dashboard = Dashboard(api_session) 

15 

16invites = flask.Blueprint( 

17 "invites", 

18 __name__, 

19) 

20 

21 

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) 

27 

28 return jsonify(invites) 

29 

30 

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")) 

36 

37 res = {} 

38 

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 ] 

47 

48 msgs = list(dict.fromkeys(msgs)) 

49 

50 for msg in msgs: 

51 flask.flash(msg, "negative") 

52 

53 return jsonify(res) 

54 

55 

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")) 

61 

62 res = {} 

63 

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 ] 

72 

73 msgs = list(dict.fromkeys(msgs)) 

74 

75 for msg in msgs: 

76 flask.flash(msg, "negative") 

77 

78 return jsonify(res)