Functionality for adding an env
- uses two route functions - one for update app, another for add environment - uses a second form for the app settings page - uses the /environments/new url naming convention
This commit is contained in:
parent
41818d7955
commit
f07ea38b9b
@ -101,6 +101,7 @@ def settings(application_id):
|
||||
members_form=members_form,
|
||||
active_toggler=http_request.args.get("active_toggler"),
|
||||
active_toggler_section=http_request.args.get("active_toggler_section"),
|
||||
new_env_form=EditEnvironmentForm(),
|
||||
)
|
||||
|
||||
|
||||
@ -135,12 +136,52 @@ def update_environment(environment_id):
|
||||
form=ApplicationForm(
|
||||
name=application.name, description=application.description
|
||||
),
|
||||
new_env_form=EditEnvironmentForm(),
|
||||
members_form=AppEnvRolesForm(
|
||||
data=data_for_app_env_roles_form(application)
|
||||
),
|
||||
environments_obj=get_environments_obj_for_app(application=application),
|
||||
active_toggler=environment.id,
|
||||
active_toggler_section="edit",
|
||||
),
|
||||
400,
|
||||
)
|
||||
|
||||
|
||||
@applications_bp.route(
|
||||
"/applications/<application_id>/environments/new", methods=["POST"]
|
||||
)
|
||||
@user_can(Permissions.CREATE_ENVIRONMENT, message="create application environment")
|
||||
def new_environment(application_id):
|
||||
application = Applications.get(application_id)
|
||||
env_form = EditEnvironmentForm(formdata=http_request.form)
|
||||
|
||||
if env_form.validate():
|
||||
Environments.create(application=application, name=env_form.name.data)
|
||||
|
||||
flash("application_environments_updated")
|
||||
|
||||
return redirect(
|
||||
url_for(
|
||||
"applications.settings",
|
||||
application_id=application.id,
|
||||
fragment="application-environments",
|
||||
_anchor="application-environments",
|
||||
)
|
||||
)
|
||||
else:
|
||||
return (
|
||||
render_template(
|
||||
"portfolios/applications/settings.html",
|
||||
application=application,
|
||||
form=ApplicationForm(
|
||||
name=application.name, description=application.description
|
||||
),
|
||||
new_env_form=env_form,
|
||||
environments_obj=get_environments_obj_for_app(application=application),
|
||||
members_form=AppEnvRolesForm(
|
||||
data=data_for_app_env_roles_form(application)
|
||||
),
|
||||
active_toggler=environment.id,
|
||||
active_toggler_section="edit",
|
||||
),
|
||||
400,
|
||||
)
|
||||
@ -166,19 +207,7 @@ def update(application_id):
|
||||
"portfolios/applications/settings.html",
|
||||
application=application,
|
||||
form=form,
|
||||
environments_obj=get_environments_obj_for_app(application=application),
|
||||
)
|
||||
|
||||
@applications_bp.route("/applications/<application_id>/add_environment", methods=["POST"])
|
||||
@user_can(Permissions.EDIT_APPLICATION, message="add application environment")
|
||||
def add_environment(application_id):
|
||||
application = Applications.get(application_id)
|
||||
form = ApplicationForm(http_request.form)
|
||||
|
||||
return render_template(
|
||||
"portfolios/applications/settings.html",
|
||||
application=application,
|
||||
form=form,
|
||||
new_env_form=EditEnvironmentForm(),
|
||||
environments_obj=get_environments_obj_for_app(application=application),
|
||||
)
|
||||
|
||||
@ -233,6 +262,7 @@ def update_env_roles(environment_id):
|
||||
form=ApplicationForm(
|
||||
name=application.name, description=application.description
|
||||
),
|
||||
new_env_form=EditEnvironmentForm(),
|
||||
environments_obj=get_environments_obj_for_app(application=application),
|
||||
active_toggler=environment.id,
|
||||
active_toggler_section="edit",
|
||||
|
@ -1,7 +1,9 @@
|
||||
{% from 'components/save_button.html' import SaveButton %}
|
||||
{% from "components/text_input.html" import TextInput %}
|
||||
{% from "components/toggle_list.html" import ToggleButton, ToggleSection %}
|
||||
|
||||
<form method='POST' id="add-new-env" action='{{ url_for("applications.add_environment", application_id=application.id) }}' autocomplete="off" enctype="multipart/form-data">
|
||||
{{ form.csrf_token }}
|
||||
<form method='POST' id="add-new-env" action='{{ url_for("applications.new_environment", application_id=application.id) }}' autocomplete="off" enctype="multipart/form-data">
|
||||
{{ new_env_form.csrf_token }}
|
||||
|
||||
<toggler inline-template>
|
||||
<div>
|
||||
@ -17,7 +19,9 @@
|
||||
<span>{{ "portfolios.applications.create_new_env" | translate }}</span>
|
||||
<div>{{ "portfolios.applications.create_new_env_info" | translate }}</div>
|
||||
<span>{{ "portfolios.applications.enter_env_name" | translate }}</span>
|
||||
{{ TextInput(new_env_form.name) }}
|
||||
</div>
|
||||
{{ SaveButton(text=('common.save' | translate), element="input", form="add-new-env") }}
|
||||
{% endcall %}
|
||||
|
||||
{{
|
||||
|
@ -128,9 +128,6 @@
|
||||
</div>
|
||||
<div class="panel__footer">
|
||||
<div class="action-group">
|
||||
<a class='icon-link'>
|
||||
{{ "portfolios.applications.add_environment" | translate }}
|
||||
{{ Icon('plus') }}
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -54,7 +54,7 @@ def test_updating_application_environments_success(client, user_session):
|
||||
assert environment.name == "new name a"
|
||||
|
||||
|
||||
def test_updating_application_environments_failure(client, user_session):
|
||||
def test_update_environment_failure(client, user_session):
|
||||
portfolio = PortfolioFactory.create()
|
||||
application = ApplicationFactory.create(portfolio=portfolio)
|
||||
environment = EnvironmentFactory.create(
|
||||
@ -391,6 +391,38 @@ def test_delete_application(client, user_session):
|
||||
assert len(application.environments) == 0
|
||||
|
||||
|
||||
def test_new_environment(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory(owner=user)
|
||||
application = ApplicationFactory.create(portfolio=portfolio)
|
||||
num_envs = len(application.environments)
|
||||
|
||||
user_session(user)
|
||||
response = client.post(
|
||||
url_for("applications.new_environment", application_id=application.id),
|
||||
data={"name": "dabea"},
|
||||
)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert len(application.environments) == num_envs + 1
|
||||
|
||||
|
||||
def test_new_environment_with_bad_data(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory(owner=user)
|
||||
application = ApplicationFactory.create(portfolio=portfolio)
|
||||
num_envs = len(application.environments)
|
||||
|
||||
user_session(user)
|
||||
response = client.post(
|
||||
url_for("applications.new_environment", application_id=application.id),
|
||||
data={"name": None},
|
||||
)
|
||||
|
||||
assert response.status_code == 400
|
||||
assert len(application.environments) == num_envs
|
||||
|
||||
|
||||
def test_delete_environment(client, user_session):
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory(owner=user)
|
||||
|
Loading…
x
Reference in New Issue
Block a user