Break new application route into multiple routes
This commit is contained in:
parent
cd37e18178
commit
8914419dac
@ -3,35 +3,128 @@ from flask import redirect, render_template, request as http_request, url_for, g
|
|||||||
from . import applications_bp
|
from . import applications_bp
|
||||||
from atst.domain.applications import Applications
|
from atst.domain.applications import Applications
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
from atst.forms.application import NewApplicationForm
|
from atst.forms.application import NameAndDescriptionForm, EnvironmentsForm
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
from atst.models.permissions import Permissions
|
from atst.models.permissions import Permissions
|
||||||
|
from atst.utils.flash import formatted_flash as flash
|
||||||
|
|
||||||
|
|
||||||
|
def get_new_application_form(form_data, form_class, application_id=None):
|
||||||
|
if application_id:
|
||||||
|
application = Applications.get(application_id)
|
||||||
|
return form_class(form_data, obj=application)
|
||||||
|
else:
|
||||||
|
return form_class(form_data)
|
||||||
|
|
||||||
|
|
||||||
|
def render_new_application_form(
|
||||||
|
template, form_class, portfolio_id=None, application_id=None, form=None
|
||||||
|
):
|
||||||
|
render_args = {"application_id": application_id}
|
||||||
|
if application_id:
|
||||||
|
application = Applications.get(application_id)
|
||||||
|
render_args["form"] = form or form_class(obj=application)
|
||||||
|
else:
|
||||||
|
render_args["form"] = form or form_class()
|
||||||
|
|
||||||
|
return render_template(template, **render_args)
|
||||||
|
|
||||||
|
|
||||||
@applications_bp.route("/portfolios/<portfolio_id>/applications/new")
|
@applications_bp.route("/portfolios/<portfolio_id>/applications/new")
|
||||||
|
@applications_bp.route(
|
||||||
|
"/portfolios/<portfolio_id>/applications/<application_id>/step_1"
|
||||||
|
)
|
||||||
|
def view_new_application_step_1(portfolio_id, application_id=None):
|
||||||
|
return render_new_application_form(
|
||||||
|
"portfolios/applications/new/step_1.html",
|
||||||
|
NameAndDescriptionForm,
|
||||||
|
portfolio_id=portfolio_id,
|
||||||
|
application_id=application_id,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@applications_bp.route(
|
||||||
|
"/portfolios/<portfolio_id>/applications/new",
|
||||||
|
endpoint="create_new_application_step_1",
|
||||||
|
methods=["POST"],
|
||||||
|
)
|
||||||
|
@applications_bp.route(
|
||||||
|
"/portfolios/<portfolio_id>/applications/<application_id>/step_1",
|
||||||
|
endpoint="update_new_application_step_1",
|
||||||
|
methods=["POST"],
|
||||||
|
)
|
||||||
@user_can(Permissions.CREATE_APPLICATION, message="view create new application form")
|
@user_can(Permissions.CREATE_APPLICATION, message="view create new application form")
|
||||||
def new(portfolio_id):
|
def create_or_update_new_application_step_1(portfolio_id, application_id=None):
|
||||||
form = NewApplicationForm()
|
|
||||||
return render_template("portfolios/applications/new.html", form=form)
|
|
||||||
|
|
||||||
|
|
||||||
@applications_bp.route("/portfolios/<portfolio_id>/applications", methods=["POST"])
|
|
||||||
@user_can(Permissions.CREATE_APPLICATION, message="create new application")
|
|
||||||
def create(portfolio_id):
|
|
||||||
portfolio = Portfolios.get_for_update(portfolio_id)
|
portfolio = Portfolios.get_for_update(portfolio_id)
|
||||||
form = NewApplicationForm(http_request.form)
|
form = get_new_application_form(
|
||||||
|
{**http_request.form}, NameAndDescriptionForm, application_id
|
||||||
|
)
|
||||||
|
|
||||||
if form.validate():
|
if form.validate():
|
||||||
application_data = form.data
|
application = None
|
||||||
Applications.create(
|
if application_id:
|
||||||
g.current_user,
|
application = Applications.get(application_id)
|
||||||
portfolio,
|
application = Applications.update(application, form.data)
|
||||||
application_data["name"],
|
else:
|
||||||
application_data["description"],
|
application = Applications.create(g.current_user, portfolio, **form.data)
|
||||||
application_data["environment_names"],
|
|
||||||
)
|
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for("applications.portfolio_applications", portfolio_id=portfolio_id)
|
url_for(
|
||||||
|
"applications.update_new_application_step_2",
|
||||||
|
portfolio_id=portfolio_id,
|
||||||
|
application_id=application.id,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return render_template("portfolios/applications/new.html", form=form)
|
return (
|
||||||
|
render_new_application_form(
|
||||||
|
"portfolios/applications/new/step_1.html",
|
||||||
|
NameAndDescriptionForm,
|
||||||
|
portfolio_id,
|
||||||
|
application_id,
|
||||||
|
form,
|
||||||
|
),
|
||||||
|
400,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@applications_bp.route(
|
||||||
|
"/portfolios/<portfolio_id>/applications/<application_id>/step_2"
|
||||||
|
)
|
||||||
|
def view_new_application_step_2(portfolio_id, application_id):
|
||||||
|
return render_new_application_form(
|
||||||
|
"portfolios/applications/new/step_2.html",
|
||||||
|
EnvironmentsForm,
|
||||||
|
portfolio_id=portfolio_id,
|
||||||
|
application_id=application_id,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@applications_bp.route(
|
||||||
|
"/portfolios/<portfolio_id>/applications/<application_id>/step_2", methods=["POST"]
|
||||||
|
)
|
||||||
|
@user_can(Permissions.CREATE_APPLICATION, message="view create new application form")
|
||||||
|
def update_new_application_step_2(portfolio_id, application_id):
|
||||||
|
form = get_new_application_form(
|
||||||
|
{**http_request.form}, EnvironmentsForm, application_id
|
||||||
|
)
|
||||||
|
if form.validate():
|
||||||
|
application = Applications.get(application_id)
|
||||||
|
application = Applications.update(application, form.data)
|
||||||
|
flash("application_created", application_name=application.name)
|
||||||
|
return redirect(
|
||||||
|
url_for(
|
||||||
|
"applications.portfolio_applications",
|
||||||
|
portfolio_id=application.portfolio_id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return (
|
||||||
|
render_new_application_form(
|
||||||
|
"portfolios/applications/new/step_2.html",
|
||||||
|
EnvironmentsForm,
|
||||||
|
portfolio_id,
|
||||||
|
application_id,
|
||||||
|
form,
|
||||||
|
),
|
||||||
|
400,
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user