From bc76ef633edda81df57414cce26a96a6000e4cf9 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Fri, 12 Oct 2018 14:15:42 -0400 Subject: [PATCH 01/18] Add route and function to update Project details --- atst/domain/projects.py | 12 ++++++++++++ atst/routes/workspaces.py | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/atst/domain/projects.py b/atst/domain/projects.py index ce9534bd..913127d0 100644 --- a/atst/domain/projects.py +++ b/atst/domain/projects.py @@ -64,3 +64,15 @@ class Projects(object): raise NotFoundError("projects") return projects + + @classmethod + def update(cls, user, workspace, project, new_data): + if "name" in new_data: + project.name = new_data["name"] + if "description" in new_data: + project.description = new_data["description"] + + db.session.add(project) + db.session.commit() + + return project diff --git a/atst/routes/workspaces.py b/atst/routes/workspaces.py index 8f1055ba..dd99617c 100644 --- a/atst/routes/workspaces.py +++ b/atst/routes/workspaces.py @@ -192,6 +192,27 @@ def edit_project(workspace_id, project_id): ) +@bp.route("/workspaces//projects//edit", methods=["POST"]) +def update_project(workspace_id, project_id): + workspace = Workspaces.get_for_update_projects(g.current_user, workspace_id) + project = Projects.get(g.current_user, workspace, project_id) + form = NewProjectForm(http_request.form) + if form.validate(): + project_data = form.data + Projects.update(g.current_user, workspace, project, project_data) + + return redirect( + url_for("workspaces.workspace_projects", workspace_id=workspace.id) + ) + else: + return render_template( + "workspaces/projects/edit.html", + workspace=workspace, + project=project, + form=form, + ) + + @bp.route("/workspaces//members/new") def new_member(workspace_id): workspace = Workspaces.get(g.current_user, workspace_id) From 25b84a4df683a3ea371d510ef256ac8d3315f3a5 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 14:02:24 -0400 Subject: [PATCH 02/18] Add ProjectForm class that does not include environments for edit project form --- atst/forms/{new_project.py => project.py} | 10 ++++++---- atst/routes/workspaces.py | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) rename atst/forms/{new_project.py => project.py} (93%) diff --git a/atst/forms/new_project.py b/atst/forms/project.py similarity index 93% rename from atst/forms/new_project.py rename to atst/forms/project.py index 00b01325..8d858a59 100644 --- a/atst/forms/new_project.py +++ b/atst/forms/project.py @@ -4,12 +4,14 @@ from wtforms.validators import Required from atst.forms.validators import ListItemRequired, ListItemsUnique -class NewProjectForm(FlaskForm): - - EMPTY_ENVIRONMENT_NAMES = ["", None] - +class ProjectForm(FlaskForm): name = StringField(label="Project Name", validators=[Required()]) description = TextAreaField(label="Description", validators=[Required()]) + + +class NewProjectForm(ProjectForm): + EMPTY_ENVIRONMENT_NAMES = ["", None] + environment_names = FieldList( StringField(label="Environment Name"), validators=[ diff --git a/atst/routes/workspaces.py b/atst/routes/workspaces.py index dd99617c..a3b7a9dc 100644 --- a/atst/routes/workspaces.py +++ b/atst/routes/workspaces.py @@ -17,7 +17,7 @@ from atst.domain.workspaces import Workspaces from atst.domain.workspace_users import WorkspaceUsers from atst.domain.environments import Environments from atst.domain.environment_roles import EnvironmentRoles -from atst.forms.new_project import NewProjectForm +from atst.forms.project import NewProjectForm, ProjectForm from atst.forms.new_member import NewMemberForm from atst.forms.edit_member import EditMemberForm from atst.forms.workspace import WorkspaceForm @@ -196,7 +196,7 @@ def edit_project(workspace_id, project_id): def update_project(workspace_id, project_id): workspace = Workspaces.get_for_update_projects(g.current_user, workspace_id) project = Projects.get(g.current_user, workspace, project_id) - form = NewProjectForm(http_request.form) + form = ProjectForm(http_request.form) if form.validate(): project_data = form.data Projects.update(g.current_user, workspace, project, project_data) From b9a2d667f682714880cafc3af4511bc478aa0662 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 14:03:13 -0400 Subject: [PATCH 03/18] Only show environment fields in form when a new project is created --- templates/fragments/edit_project_form.html | 46 +++++++++++----------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/templates/fragments/edit_project_form.html b/templates/fragments/edit_project_form.html index a5c6d485..b55b9f7b 100644 --- a/templates/fragments/edit_project_form.html +++ b/templates/fragments/edit_project_form.html @@ -48,31 +48,33 @@ -
-
-

Project Environments

-

- Each environment created within a project is an enclave of cloud resources that is logically separated from each other for increased security. -

-
+ {% if new_project %} +
+
+

Project Environments

+

+ Each environment created within a project is an enclave of cloud resources that is logically separated from each other for increased security. +

+
-
    -
  • -
    - - -
    - -
  • -
+
    +
  • +
    + + +
    + +
  • +
- -
+ {% endif %}
From d62b7e883e0803cfdd23a6b2a046ab80d48ca1a0 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 14:03:48 -0400 Subject: [PATCH 04/18] Add tests for update project route --- tests/routes/test_workspaces.py | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/routes/test_workspaces.py b/tests/routes/test_workspaces.py index beacb529..3b4b18c0 100644 --- a/tests/routes/test_workspaces.py +++ b/tests/routes/test_workspaces.py @@ -115,6 +115,53 @@ def test_view_edit_project(client, user_session): assert response.status_code == 200 +def test_user_with_permission_can_update_project(client, user_session): + owner = UserFactory.create() + workspace = WorkspaceFactory.create() + Workspaces._create_workspace_role(owner, workspace, "admin") + project = Projects.create( + owner, workspace, "Awesome Project", "It's really awesome!", {"dev", "prod"} + ) + user_session(owner) + response = client.post( + url_for( + "workspaces.update_project", + workspace_id=workspace.id, + project_id=project.id, + ), + data={"name": "Really Cool Project", "description": "A very cool project."}, + follow_redirects=True, + ) + + assert response.status_code == 200 + assert project.name == "Really Cool Project" + assert project.description == "A very cool project." + + +def test_user_without_permission_cannot_update_project(client, user_session): + dev = UserFactory.create() + owner = UserFactory.create() + workspace = WorkspaceFactory.create() + Workspaces._create_workspace_role(dev, workspace, "developer") + project = Projects.create( + owner, workspace, "Great Project", "Cool stuff happening here!", {"dev", "prod"} + ) + user_session(dev) + response = client.post( + url_for( + "workspaces.update_project", + workspace_id=workspace.id, + project_id=project.id, + ), + data={"name": "New Name", "description": "A new description."}, + follow_redirects=True, + ) + + assert response.status_code == 404 + assert project.name == "Great Project" + assert project.description == "Cool stuff happening here!" + + def test_create_member(client, user_session): owner = UserFactory.create() user = UserFactory.create() From 424bacbf1e1d7d38002d2c806e998f3f400c13bf Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 14:26:28 -0400 Subject: [PATCH 05/18] Add test for update Projects method --- tests/domain/test_projects.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/domain/test_projects.py b/tests/domain/test_projects.py index d46b1135..4fa0a7bb 100644 --- a/tests/domain/test_projects.py +++ b/tests/domain/test_projects.py @@ -24,3 +24,34 @@ def test_workspace_owner_can_view_environments(): project = Projects.get(owner, workspace, workspace.projects[0].id) assert len(project.environments) == 2 + + +def test_can_only_update_name_and_description(): + owner = UserFactory.create() + workspace = WorkspaceFactory.create( + owner=owner, + projects=[ + { + "name": "Project 1", + "description": "a project", + "environments": [{"name": "dev"}], + } + ], + ) + project = Projects.get(owner, workspace, workspace.projects[0].id) + env_name = project.environments[0].name + Projects.update( + owner, + workspace, + project, + { + "name": "New Name", + "description": "a new project", + "environment_name": "prod", + }, + ) + + assert project.name == "New Name" + assert project.description == "a new project" + assert len(project.environments) == 1 + assert project.environments[0].name == env_name From 3040115162639b07b22b91cc7d5c933e015c55d2 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 14:29:27 -0400 Subject: [PATCH 06/18] Remove WIP alert --- templates/workspaces/projects/edit.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/templates/workspaces/projects/edit.html b/templates/workspaces/projects/edit.html index 1fa3bc20..11bc064e 100644 --- a/templates/workspaces/projects/edit.html +++ b/templates/workspaces/projects/edit.html @@ -5,10 +5,6 @@ {% block workspace_content %} -{% if g.dev %} - {{ Alert("In Progress", message="This page is a work in progress. You won't be able to edit environments on this project just yet.", level="warning") }} -{% endif %} - {% set modalName = "updateProjectConfirmation" %} {% include "fragments/edit_project_form.html" %} From 8fe9c464bde21adbf5b83e427366b687da46499e Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 16:40:15 -0400 Subject: [PATCH 07/18] Refactor Edit Project Form fragment to only include form fields that are shared in new and edit forms --- templates/fragments/edit_project_form.html | 92 ++++------------------ 1 file changed, 15 insertions(+), 77 deletions(-) diff --git a/templates/fragments/edit_project_form.html b/templates/fragments/edit_project_form.html index b55b9f7b..50e387e3 100644 --- a/templates/fragments/edit_project_form.html +++ b/templates/fragments/edit_project_form.html @@ -1,87 +1,25 @@ -{% from "components/icon.html" import Icon %} -{% from "components/modal.html" import Modal %} {% from "components/text_input.html" import TextInput %} {% from "components/alert.html" import Alert %} - - {% set new_project = project is not defined %} - {% set form_action = url_for('workspaces.create_project', workspace_id=workspace.id) if new_project else url_for('workspaces.edit_project', workspace_id=workspace.id, project_id=project.id) %} - {% set action_text = 'Create' if new_project else 'Update' %} - {% set title_text = 'Add a new project' if new_project else 'Edit {} project'.format(project.name) %} +{% set title_text = 'Edit {} project'.format(project.name) if project else 'Add a new project' %} -
- {% call Modal(name=modalName, dismissable=False) %} -

{{ action_text }} project !{ name }

+{{ form.csrf_token }} +
+
+

{{ title_text }}

+
+

- When you click {{ action_text }} Project, the environments - - !{environment.name} - - will be created as individual cloud resource groups under !{ name } project. + AT-AT allows you to organize your workspace into multiple projects, each of which may have environments.

- -
- - -
- {% endcall %} - - {{ form.csrf_token }} -
-
-

{{ title_text }}

-
- -
-

- AT-AT allows you to organize your workspace into multiple projects, each of which may have environments. -

- {{ TextInput(form.name) }} - {{ TextInput(form.description, paragraph=True) }} -
+ {{ TextInput(form.name) }} + {{ TextInput(form.description, paragraph=True) }}
+
-
{# this extra div prevents this bug: https://www.pivotaltracker.com/story/show/160768940 #} -
- {{ Alert(message=None, level="error", vue_template=True) }} -
+
{# this extra div prevents this bug: https://www.pivotaltracker.com/story/show/160768940 #} +
+ {{ Alert(message=None, level="error", vue_template=True) }}
- - {% if new_project %} -
-
-

Project Environments

-

- Each environment created within a project is an enclave of cloud resources that is logically separated from each other for increased security. -

-
- -
    -
  • -
    - - -
    - -
  • -
- - -
- {% endif %} - -
- -
- -
- - - - +
From 6de48837faf02f70ba5b8d1a0b2268e80caea2d6 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 16:42:53 -0400 Subject: [PATCH 08/18] Refactor New Project Form to remove conditional logic and include fields relevant to new project --- templates/workspaces/projects/new.html | 75 ++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 10 deletions(-) diff --git a/templates/workspaces/projects/new.html b/templates/workspaces/projects/new.html index c140023b..8f71d9ad 100644 --- a/templates/workspaces/projects/new.html +++ b/templates/workspaces/projects/new.html @@ -1,19 +1,74 @@ {% extends "workspaces/base.html" %} {% from "components/alert.html" import Alert %} +{% from "components/icon.html" import Icon %} +{% from "components/modal.html" import Modal %} +{% from "components/text_input.html" import TextInput %} {% block workspace_content %} -{% set modalName = "newProjectConfirmation" %} -{% if request.args.get("newWorkspace") %} - {{ Alert('Workspace created!', - message="\ -

You are now ready to create projects and environments within the JEDI Cloud.

- ", - level='success' - ) }} -{% endif %} + {% set modalName = "newProjectConfirmation" %} + {% if request.args.get("newWorkspace") %} + {{ Alert('Workspace created!', + message="\ +

You are now ready to create projects and environments within the JEDI Cloud.

+ ", + level='success' + ) }} + {% endif %} -{% include "fragments/edit_project_form.html" %} + +
+ + {% call Modal(name=modalName, dismissable=False) %} +

Create project !{ name }

+ +

+ When you click Create Project, the environments + + !{environment.name} + + will be created as individual cloud resource groups under !{ name } project. +

+ +
+ + +
+ {% endcall %} + + {% include "fragments/edit_project_form.html" %} + +
+
+

Project Environments

+

+ Each environment created within a project is an enclave of cloud resources that is logically separated from each other for increased security. +

+
+ +
    +
  • +
    + + +
    + +
  • +
+ + +
+ +
+ +
+
+
{% endblock %} From c5bc10d8c322089b45e1a105381dd79419017b8f Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 15 Oct 2018 16:43:45 -0400 Subject: [PATCH 09/18] Refactory Edit Project Form to simplify and use Edit Project fragment --- templates/workspaces/projects/edit.html | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/templates/workspaces/projects/edit.html b/templates/workspaces/projects/edit.html index 11bc064e..aecc2254 100644 --- a/templates/workspaces/projects/edit.html +++ b/templates/workspaces/projects/edit.html @@ -2,10 +2,18 @@ {% from "components/alert.html" import Alert %} {% from "components/icon.html" import Icon %} +{% from "components/modal.html" import Modal %} +{% from "components/text_input.html" import TextInput %} {% block workspace_content %} -{% set modalName = "updateProjectConfirmation" %} -{% include "fragments/edit_project_form.html" %} +
+ + {% include "fragments/edit_project_form.html" %} + +
+ +
+
{% endblock %} From 3eea3f54544e8a5dd9b0b5651715ce3592852cc0 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 16 Oct 2018 10:42:59 -0400 Subject: [PATCH 10/18] Refactor tests to use WorkspaceFactory create --- tests/routes/test_workspaces.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tests/routes/test_workspaces.py b/tests/routes/test_workspaces.py index 3b4b18c0..f345f462 100644 --- a/tests/routes/test_workspaces.py +++ b/tests/routes/test_workspaces.py @@ -117,11 +117,17 @@ def test_view_edit_project(client, user_session): def test_user_with_permission_can_update_project(client, user_session): owner = UserFactory.create() - workspace = WorkspaceFactory.create() - Workspaces._create_workspace_role(owner, workspace, "admin") - project = Projects.create( - owner, workspace, "Awesome Project", "It's really awesome!", {"dev", "prod"} + workspace = WorkspaceFactory.create( + owner=owner, + projects=[ + { + "name": "Awesome Project", + "description": "It's really awesome!", + "environments": [{"name": "dev"}, {"name": "prod"}], + } + ], ) + project = workspace.projects[0] user_session(owner) response = client.post( url_for( @@ -141,11 +147,18 @@ def test_user_with_permission_can_update_project(client, user_session): def test_user_without_permission_cannot_update_project(client, user_session): dev = UserFactory.create() owner = UserFactory.create() - workspace = WorkspaceFactory.create() - Workspaces._create_workspace_role(dev, workspace, "developer") - project = Projects.create( - owner, workspace, "Great Project", "Cool stuff happening here!", {"dev", "prod"} + workspace = WorkspaceFactory.create( + owner=owner, + members=[{"user": dev, "role_name": "developer"}], + projects=[ + { + "name": "Great Project", + "description": "Cool stuff happening here!", + "environments": [{"name": "dev"}, {"name": "prod"}], + } + ], ) + project = workspace.projects[0] user_session(dev) response = client.post( url_for( From ff88c5c34afc8641563aa38dbed14be437bc6bfb Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 16 Oct 2018 14:56:38 -0400 Subject: [PATCH 11/18] Update edit_project route to use ProjectForm and removed environments from being passed to form --- atst/routes/workspaces.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/atst/routes/workspaces.py b/atst/routes/workspaces.py index a3b7a9dc..005ae65a 100644 --- a/atst/routes/workspaces.py +++ b/atst/routes/workspaces.py @@ -181,9 +181,8 @@ def create_project(workspace_id): def edit_project(workspace_id, project_id): workspace = Workspaces.get_for_update_projects(g.current_user, workspace_id) project = Projects.get(g.current_user, workspace, project_id) - form = NewProjectForm( + form = ProjectForm( name=project.name, - environment_names=[env.name for env in project.environments], description=project.description, ) From 92fc5e6e76f0c680dda3999060b39e3488c0aa81 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 16 Oct 2018 14:58:35 -0400 Subject: [PATCH 12/18] Add in environment section to Edit Project Page --- templates/workspaces/projects/edit.html | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/templates/workspaces/projects/edit.html b/templates/workspaces/projects/edit.html index aecc2254..0c42c537 100644 --- a/templates/workspaces/projects/edit.html +++ b/templates/workspaces/projects/edit.html @@ -11,6 +11,26 @@ {% include "fragments/edit_project_form.html" %} +
+
+

Project Environments

+

+ Each environment created within a project is an enclave of cloud resources that is logically separated from each other for increased security. +

+
+ +
    + {% for environment in project.environments %} +
  • +
    + + +
    +
  • + {% endfor %} +
+
+
From 2455618268b119458f10c41a0e466ad7584d7e2d Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 16 Oct 2018 14:59:12 -0400 Subject: [PATCH 13/18] Remove unused imports --- templates/workspaces/projects/edit.html | 3 --- 1 file changed, 3 deletions(-) diff --git a/templates/workspaces/projects/edit.html b/templates/workspaces/projects/edit.html index 0c42c537..bff46ae6 100644 --- a/templates/workspaces/projects/edit.html +++ b/templates/workspaces/projects/edit.html @@ -1,8 +1,5 @@ {% extends "workspaces/base.html" %} -{% from "components/alert.html" import Alert %} -{% from "components/icon.html" import Icon %} -{% from "components/modal.html" import Modal %} {% from "components/text_input.html" import TextInput %} {% block workspace_content %} From 86cf568e5b4e9649e3d59b4d17d9a1993b270f95 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 16 Oct 2018 14:59:52 -0400 Subject: [PATCH 14/18] Formatting --- atst/routes/workspaces.py | 5 +--- templates/fragments/edit_project_form.html | 32 +++++++++++----------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/atst/routes/workspaces.py b/atst/routes/workspaces.py index 005ae65a..af59939b 100644 --- a/atst/routes/workspaces.py +++ b/atst/routes/workspaces.py @@ -181,10 +181,7 @@ def create_project(workspace_id): def edit_project(workspace_id, project_id): workspace = Workspaces.get_for_update_projects(g.current_user, workspace_id) project = Projects.get(g.current_user, workspace, project_id) - form = ProjectForm( - name=project.name, - description=project.description, - ) + form = ProjectForm(name=project.name, description=project.description) return render_template( "workspaces/projects/edit.html", workspace=workspace, project=project, form=form diff --git a/templates/fragments/edit_project_form.html b/templates/fragments/edit_project_form.html index 50e387e3..577c4908 100644 --- a/templates/fragments/edit_project_form.html +++ b/templates/fragments/edit_project_form.html @@ -4,22 +4,22 @@ {% set title_text = 'Edit {} project'.format(project.name) if project else 'Add a new project' %} {{ form.csrf_token }} -
-
-

{{ title_text }}

-
- -
-

- AT-AT allows you to organize your workspace into multiple projects, each of which may have environments. -

- {{ TextInput(form.name) }} - {{ TextInput(form.description, paragraph=True) }} -
+
+
+

{{ title_text }}

-
{# this extra div prevents this bug: https://www.pivotaltracker.com/story/show/160768940 #} -
- {{ Alert(message=None, level="error", vue_template=True) }} -
+
+

+ AT-AT allows you to organize your workspace into multiple projects, each of which may have environments. +

+ {{ TextInput(form.name) }} + {{ TextInput(form.description, paragraph=True) }}
+
+ +
{# this extra div prevents this bug: https://www.pivotaltracker.com/story/show/160768940 #} +
+ {{ Alert(message=None, level="error", vue_template=True) }} +
+
From 253d0e979367652a088c4fcc9da801aa6c87a857 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 18 Oct 2018 11:12:16 -0400 Subject: [PATCH 15/18] Add styling to read-only input fields --- styles/elements/_inputs.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/styles/elements/_inputs.scss b/styles/elements/_inputs.scss index 6cd22272..2be9f2fe 100644 --- a/styles/elements/_inputs.scss +++ b/styles/elements/_inputs.scss @@ -133,6 +133,10 @@ } } + input:read-only { + color: grey; + } + .usa-input__choices { // checkbox & radio sets legend { padding: 0 0 $gap 0; From 4bd42a7bc05526eaa4416384dee9146fe74aa741 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 23 Oct 2018 10:58:50 -0400 Subject: [PATCH 16/18] Remove v-on:submit attribute since form is no longer hooked into Vue --- templates/workspaces/projects/edit.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/workspaces/projects/edit.html b/templates/workspaces/projects/edit.html index bff46ae6..c9785f2d 100644 --- a/templates/workspaces/projects/edit.html +++ b/templates/workspaces/projects/edit.html @@ -4,7 +4,7 @@ {% block workspace_content %} -
+ {% include "fragments/edit_project_form.html" %} From 0dd9ab96847abff23fb1088f208cea29f00ab42d Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 23 Oct 2018 11:01:01 -0400 Subject: [PATCH 17/18] Move Enviroment error message div to New Project form --- templates/fragments/edit_project_form.html | 6 ------ templates/workspaces/projects/new.html | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/fragments/edit_project_form.html b/templates/fragments/edit_project_form.html index 577c4908..42d5f3e7 100644 --- a/templates/fragments/edit_project_form.html +++ b/templates/fragments/edit_project_form.html @@ -17,9 +17,3 @@ {{ TextInput(form.description, paragraph=True) }}
- -
{# this extra div prevents this bug: https://www.pivotaltracker.com/story/show/160768940 #} -
- {{ Alert(message=None, level="error", vue_template=True) }} -
-
diff --git a/templates/workspaces/projects/new.html b/templates/workspaces/projects/new.html index 8f71d9ad..6e6b990a 100644 --- a/templates/workspaces/projects/new.html +++ b/templates/workspaces/projects/new.html @@ -39,6 +39,12 @@ {% include "fragments/edit_project_form.html" %} +
{# this extra div prevents this bug: https://www.pivotaltracker.com/story/show/160768940 #} +
+ {{ Alert(message=None, level="error", vue_template=True) }} +
+
+

Project Environments

From ae2c1f89185080d54e686a075d21e5319feac480 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 23 Oct 2018 13:45:04 -0400 Subject: [PATCH 18/18] Fix from merge conflict --- templates/workspaces/projects/new.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/workspaces/projects/new.html b/templates/workspaces/projects/new.html index 6e6b990a..9a83ae40 100644 --- a/templates/workspaces/projects/new.html +++ b/templates/workspaces/projects/new.html @@ -32,7 +32,7 @@

- +
{% endcall %}