Coverage for webapp/endpoints/publisher/register.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 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["message"] = """You don't have permission
56 to register a snap in this store.
57 Please see store administrator."""
59 return jsonify(res)
61 res["message"] = "Unable to register snap name"
62 res["data"] = {
63 "snap_name": snap_name,
64 "is_private": is_private,
65 "store": store,
66 }
68 return jsonify(res)
70 return jsonify({"success": True})
73@login_required
74def post_register_name_dispute():
75 try:
76 claim = flask.json.loads(flask.request.data)
77 snap_name = claim["snap-name"]
78 claim_comment = claim["claim-comment"]
79 dashboard.post_register_name_dispute(
80 flask.session,
81 bleach.clean(snap_name),
82 bleach.clean(claim_comment),
83 )
84 except StoreApiResponseErrorList as api_response_error_list:
85 if api_response_error_list.status_code in [400, 409]:
86 return jsonify(
87 {
88 "success": False,
89 "data": api_response_error_list.errors,
90 "message": api_response_error_list.errors[0]["message"],
91 }
92 )
93 return jsonify({"success": True})