def post_register_name(): snap_name = flask.request.form.get("snap-name") if not snap_name: return flask.redirect(flask.url_for(".get_register_name")) is_private = flask.request.form.get("is_private") == "private" store = flask.request.form.get("store") registrant_comment = flask.request.form.get("registrant_comment") try: api.post_register_name( session=flask.session, snap_name=snap_name, is_private=is_private, store=store, registrant_comment=registrant_comment, ) except ApiResponseErrorList as api_response_error_list: if api_response_error_list.status_code == 409: for error in api_response_error_list.errors: if error["code"] == "already_claimed": return flask.redirect( flask.url_for("account.get_account_details")) elif error["code"] == "already_registered": return flask.redirect( flask.url_for( ".get_register_name", snap_name=snap_name, is_private=is_private, conflict=True, )) elif error["code"] == "already_owned": return flask.redirect( flask.url_for( ".get_register_name", snap_name=snap_name, is_private=is_private, already_owned=True, )) context = { "snap_name": snap_name, "is_private": is_private, "errors": api_response_error_list.errors, } return flask.render_template("publisher/register-snap.html", **context) except ApiError as api_error: return _handle_errors(api_error) flask.flash("".join([ snap_name, " registered.", ' <a href="https://docs.snapcraft.io/build-snaps/upload"', ' class="p-link--external"', ' target="blank">How to upload a Snap</a>', ])) return flask.redirect(flask.url_for("account.get_account"))
def post_register_name(): snap_name = flask.request.form.get('snap-name') if not snap_name: return flask.redirect(flask.url_for('.get_register_name')) is_private = flask.request.form.get('is_private') == 'private' store = flask.request.form.get('store') registrant_comment = flask.request.form.get('registrant_comment') try: api.post_register_name(session=flask.session, snap_name=snap_name, is_private=is_private, store=store, registrant_comment=registrant_comment) except ApiResponseErrorList as api_response_error_list: if api_response_error_list.status_code == 409: for error in api_response_error_list.errors: if error['code'] == 'already_claimed': return flask.redirect(flask.url_for('.get_account')) elif error['code'] == 'already_registered': return flask.redirect( flask.url_for('account.get_register_name', snap_name=snap_name, is_private=is_private, conflict=True)) elif error['code'] == 'already_owned': return flask.redirect( flask.url_for('account.get_register_name', snap_name=snap_name, is_private=is_private, already_owned=True)) context = { 'snap_name': snap_name, 'is_private': is_private, 'errors': api_response_error_list.errors, } return flask.render_template('publisher/register-snap.html', **context) except ApiError as api_error: return _handle_errors(api_error) flask.flash(''.join([ snap_name, ' registered.', ' <a href="https://docs.snapcraft.io/build-snaps/upload"', ' class="p-link--external"', ' target="blank">How to upload a Snap</a>' ])) return flask.redirect(flask.url_for('.get_account'))
def post_register_name_json(): snap_name = flask.request.form.get("snap-name") if not snap_name: return ( flask.jsonify({"errors": [{ "message": "Snap name is required" }]}), 400, ) try: response = api.post_register_name(session=flask.session, snap_name=snap_name) except ApiResponseErrorList as api_response_error_list: for error in api_response_error_list.errors: # if snap name is already owned treat it as success if error["code"] == "already_owned": return flask.jsonify({ "code": error["code"], "snap_name": snap_name }) return ( flask.jsonify({"errors": api_response_error_list.errors}), api_response_error_list.status_code, ) except ApiError as api_error: return _handle_error(api_error) response["code"] = "created" return flask.jsonify(response)
def post_register_name(): snap_name = flask.request.form.get('snap-name') if not snap_name: return flask.redirect(flask.url_for('.get_register_name')) is_private = flask.request.form.get('is_private') == 'private' store = flask.request.form.get('store') registrant_comment = flask.request.form.get('registrant_comment') try: api.post_register_name(session=flask.session, snap_name=snap_name, is_private=is_private, store=store, registrant_comment=registrant_comment) except ApiResponseErrorList as api_response_error_list: if api_response_error_list.status_code == 409: for error in api_response_error_list.errors: if error['code'] == 'already_claimed': # TODO add flash message for next page with notification return flask.redirect(flask.url_for('.get_account')) elif error['code'] == 'already_registered': return flask.redirect( flask.url_for('account.get_register_name', snap_name=snap_name, is_private=is_private, conflict=True)) context = { 'snap_name': snap_name, 'is_private': is_private, 'errors': api_response_error_list.errors, } return flask.render_template('publisher/register-name.html', **context) except ApiError as api_error: return _handle_errors(api_error) return flask.redirect(flask.url_for('.get_account'))
def post_register_name(): snap_name = flask.request.form.get("snap-name") if not snap_name: return flask.redirect(flask.url_for(".get_register_name")) is_private = flask.request.form.get("is_private") == "private" store = flask.request.form.get("store") registrant_comment = flask.request.form.get("registrant_comment") try: api.post_register_name( session=flask.session, snap_name=snap_name, is_private=is_private, store=store, registrant_comment=registrant_comment, ) except ApiResponseErrorList as api_response_error_list: try: user = api.get_account(flask.session) except ApiError as api_error: return _handle_errors(api_error) available_stores = logic.filter_available_stores(user["stores"]) if api_response_error_list.status_code == 409: for error in api_response_error_list.errors: if error["code"] == "already_claimed": return flask.redirect( flask.url_for("account.get_account_details") ) elif error["code"] == "already_registered": return flask.redirect( flask.url_for( ".get_register_name", snap_name=snap_name, is_private=is_private, conflict=True, ) ) elif error["code"] == "already_owned": return flask.redirect( flask.url_for( ".get_register_name", snap_name=snap_name, is_private=is_private, already_owned=True, ) ) context = { "snap_name": snap_name, "is_private": is_private, "available_stores": available_stores, "errors": api_response_error_list.errors, } return flask.render_template("publisher/register-snap.html", **context) except ApiError as api_error: return _handle_errors(api_error) flask.flash( "".join( [ snap_name, " registered.", ' <a href="https://docs.snapcraft.io/build-snaps/upload"', ' class="p-link--external"', ' target="blank">How to upload a Snap</a>', ] ) ) return flask.redirect(flask.url_for("account.get_account"))