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,
|
members_form=members_form,
|
||||||
active_toggler=http_request.args.get("active_toggler"),
|
active_toggler=http_request.args.get("active_toggler"),
|
||||||
active_toggler_section=http_request.args.get("active_toggler_section"),
|
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(
|
form=ApplicationForm(
|
||||||
name=application.name, description=application.description
|
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),
|
environments_obj=get_environments_obj_for_app(application=application),
|
||||||
members_form=AppEnvRolesForm(
|
members_form=AppEnvRolesForm(
|
||||||
data=data_for_app_env_roles_form(application)
|
data=data_for_app_env_roles_form(application)
|
||||||
),
|
),
|
||||||
active_toggler=environment.id,
|
|
||||||
active_toggler_section="edit",
|
|
||||||
),
|
),
|
||||||
400,
|
400,
|
||||||
)
|
)
|
||||||
@ -166,19 +207,7 @@ def update(application_id):
|
|||||||
"portfolios/applications/settings.html",
|
"portfolios/applications/settings.html",
|
||||||
application=application,
|
application=application,
|
||||||
form=form,
|
form=form,
|
||||||
environments_obj=get_environments_obj_for_app(application=application),
|
new_env_form=EditEnvironmentForm(),
|
||||||
)
|
|
||||||
|
|
||||||
@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,
|
|
||||||
environments_obj=get_environments_obj_for_app(application=application),
|
environments_obj=get_environments_obj_for_app(application=application),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -233,6 +262,7 @@ def update_env_roles(environment_id):
|
|||||||
form=ApplicationForm(
|
form=ApplicationForm(
|
||||||
name=application.name, description=application.description
|
name=application.name, description=application.description
|
||||||
),
|
),
|
||||||
|
new_env_form=EditEnvironmentForm(),
|
||||||
environments_obj=get_environments_obj_for_app(application=application),
|
environments_obj=get_environments_obj_for_app(application=application),
|
||||||
active_toggler=environment.id,
|
active_toggler=environment.id,
|
||||||
active_toggler_section="edit",
|
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 %}
|
{% 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 method='POST' id="add-new-env" action='{{ url_for("applications.new_environment", application_id=application.id) }}' autocomplete="off" enctype="multipart/form-data">
|
||||||
{{ form.csrf_token }}
|
{{ new_env_form.csrf_token }}
|
||||||
|
|
||||||
<toggler inline-template>
|
<toggler inline-template>
|
||||||
<div>
|
<div>
|
||||||
@ -17,7 +19,9 @@
|
|||||||
<span>{{ "portfolios.applications.create_new_env" | translate }}</span>
|
<span>{{ "portfolios.applications.create_new_env" | translate }}</span>
|
||||||
<div>{{ "portfolios.applications.create_new_env_info" | translate }}</div>
|
<div>{{ "portfolios.applications.create_new_env_info" | translate }}</div>
|
||||||
<span>{{ "portfolios.applications.enter_env_name" | translate }}</span>
|
<span>{{ "portfolios.applications.enter_env_name" | translate }}</span>
|
||||||
|
{{ TextInput(new_env_form.name) }}
|
||||||
</div>
|
</div>
|
||||||
|
{{ SaveButton(text=('common.save' | translate), element="input", form="add-new-env") }}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|
||||||
{{
|
{{
|
||||||
|
@ -128,9 +128,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="panel__footer">
|
<div class="panel__footer">
|
||||||
<div class="action-group">
|
<div class="action-group">
|
||||||
<a class='icon-link'>
|
|
||||||
{{ "portfolios.applications.add_environment" | translate }}
|
|
||||||
{{ Icon('plus') }}
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -54,7 +54,7 @@ def test_updating_application_environments_success(client, user_session):
|
|||||||
assert environment.name == "new name a"
|
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()
|
portfolio = PortfolioFactory.create()
|
||||||
application = ApplicationFactory.create(portfolio=portfolio)
|
application = ApplicationFactory.create(portfolio=portfolio)
|
||||||
environment = EnvironmentFactory.create(
|
environment = EnvironmentFactory.create(
|
||||||
@ -391,6 +391,38 @@ def test_delete_application(client, user_session):
|
|||||||
assert len(application.environments) == 0
|
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):
|
def test_delete_environment(client, user_session):
|
||||||
user = UserFactory.create()
|
user = UserFactory.create()
|
||||||
portfolio = PortfolioFactory(owner=user)
|
portfolio = PortfolioFactory(owner=user)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user