Coverage for webapp/publisher/views.py : 100%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# Packages
2import flask
3from flask.json import jsonify
5from canonicalwebteam.store_api.stores.snapstore import SnapPublisher
6from canonicalwebteam.store_api.exceptions import StoreApiResponseErrorList
8# Local
9import webapp.api.marketo as marketo_api
10from webapp.helpers import api_publisher_session
11from webapp import helpers
12from webapp.decorators import login_required
14account = flask.Blueprint(
15 "account", __name__, template_folder="/templates", static_folder="/static"
16)
18marketo = marketo_api.Marketo()
19publisher_api = SnapPublisher(api_publisher_session)
22@account.route("/")
23@login_required
24def get_account():
25 return flask.redirect(flask.url_for("publisher_snaps.get_account_snaps"))
28@account.route("/publisher", methods=["GET"])
29@login_required
30def get_publisher_details():
31 flask_user = helpers.get_publisher_data()
32 response = flask.make_response(flask_user)
34 # Unset the last_login_method cookie to avoid forcing
35 response.set_cookie("last_login_method", "", expires=0)
36 response.headers["Cache-Control"] = "no-store"
38 return response
41@account.route("/publisher", methods=["POST"])
42@login_required
43def post_publisher_details():
44 try:
45 newsletter_status = flask.request.form.get("newsletter")
46 email = flask.request.form.get("email")
47 marketo.set_newsletter_subscription(email, newsletter_status)
48 return jsonify({"success": True})
49 except Exception:
50 return jsonify(
51 {
52 "success": False,
53 "message": "There was an error, please try again.",
54 }
55 )
58@account.route("/agreement")
59def get_agreement():
60 return flask.render_template(
61 "publisher/developer_programme_agreement.html"
62 )
65@account.route("/agreement", methods=["POST"])
66def post_agreement():
67 agreed = flask.request.form.get("i_agree")
68 if agreed == "on":
69 publisher_api.post_agreement(flask.session, True)
70 return flask.redirect(flask.url_for(".get_account"))
71 else:
72 return flask.redirect(flask.url_for(".get_agreement"))
75@account.route("/username")
76@login_required
77def get_account_name():
78 return flask.render_template("publisher/username.html")
81@account.route("/username", methods=["POST"])
82@login_required
83def post_account_name():
84 username = flask.request.form.get("username")
86 if username:
87 errors = []
88 try:
89 publisher_api.post_username(flask.session, username)
90 except StoreApiResponseErrorList as api_response_error_list:
91 errors = errors + api_response_error_list.errors
93 if errors:
94 return flask.render_template(
95 "publisher/username.html", username=username, error_list=errors
96 )
98 return flask.redirect(flask.url_for(".get_account"))
99 else:
100 return flask.redirect(flask.url_for(".get_account_name"))