Hide keyboard shortcuts

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 

4 

5from canonicalwebteam.store_api.stores.snapstore import SnapPublisher 

6from canonicalwebteam.store_api.exceptions import StoreApiResponseErrorList 

7 

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 

13 

14account = flask.Blueprint( 

15 "account", __name__, template_folder="/templates", static_folder="/static" 

16) 

17 

18marketo = marketo_api.Marketo() 

19publisher_api = SnapPublisher(api_publisher_session) 

20 

21 

22@account.route("/") 

23@login_required 

24def get_account(): 

25 return flask.redirect(flask.url_for("publisher_snaps.get_account_snaps")) 

26 

27 

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) 

33 

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" 

37 

38 return response 

39 

40 

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 ) 

56 

57 

58@account.route("/agreement") 

59def get_agreement(): 

60 return flask.render_template( 

61 "publisher/developer_programme_agreement.html" 

62 ) 

63 

64 

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

73 

74 

75@account.route("/username") 

76@login_required 

77def get_account_name(): 

78 return flask.render_template("publisher/username.html") 

79 

80 

81@account.route("/username", methods=["POST"]) 

82@login_required 

83def post_account_name(): 

84 username = flask.request.form.get("username") 

85 

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 

92 

93 if errors: 

94 return flask.render_template( 

95 "publisher/username.html", username=username, error_list=errors 

96 ) 

97 

98 return flask.redirect(flask.url_for(".get_account")) 

99 else: 

100 return flask.redirect(flask.url_for(".get_account_name"))