Coverage for webapp/endpoints/publisher/register.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 bleach
3import flask
4from canonicalwebteam.store_api.dashboard import Dashboard
5from canonicalwebteam.exceptions import StoreApiResponseErrorList
6from flask.json import jsonify
8# Local
9from webapp.helpers import api_publisher_session
10from webapp.decorators import login_required
12dashboard = Dashboard(api_publisher_session)
15@login_required
16def post_register_name():
17 snap_name = flask.request.form.get("snap_name")
18 res = {}
20 if not snap_name:
21 res["success"] = False
22 res["message"] = "You must define a snap name"
24 return jsonify(res)
26 is_private = flask.request.form.get("is_private") == "private"
27 store = flask.request.form.get("store")
29 try:
30 dashboard.post_register_name(
31 session=flask.session,
32 snap_name=snap_name,
33 registrant_comment=None,
34 is_private=is_private,
35 store=store,
36 )
37 except StoreApiResponseErrorList as api_response_error_list:
38 res = {
39 "success": False,
40 "data": {
41 "is_private": is_private,
42 "snap_name": snap_name,
43 "store": store,
44 },
45 }
47 if api_response_error_list.status_code == 409:
48 for error in api_response_error_list.errors:
49 res["data"]["error_code"] = error["code"]
51 return jsonify(res)
53 if api_response_error_list.status_code == 400:
54 res["data"]["error_code"] = "no-permission"
55 res[
56 "message"
57 ] = """You don't have permission
58 to register a snap in this store.
59 Please see store administrator."""
61 return jsonify(res)
63 res["message"] = "Unable to register snap name"
64 res["data"] = {
65 "snap_name": snap_name,
66 "is_private": is_private,
67 "store": store,
68 }
70 return jsonify(res)
72 return jsonify({"success": True})
75@login_required
76def post_register_name_dispute():
77 try:
78 claim = flask.json.loads(flask.request.data)
79 snap_name = claim["snap-name"]
80 claim_comment = claim["claim-comment"]
81 dashboard.post_register_name_dispute(
82 flask.session,
83 bleach.clean(snap_name),
84 bleach.clean(claim_comment),
85 )
86 except StoreApiResponseErrorList as api_response_error_list:
87 if api_response_error_list.status_code in [400, 409]:
88 return jsonify(
89 {
90 "success": False,
91 "data": api_response_error_list.errors,
92 "message": api_response_error_list.errors[0]["message"],
93 }
94 )
95 return jsonify({"success": True})