From bef2b8ed249c187dadab64c8db2ffc8df31e84e2 Mon Sep 17 00:00:00 2001 From: Montana Date: Fri, 15 Feb 2019 10:33:18 -0500 Subject: [PATCH 1/8] Add edit links to KO Review sections that link to TO form --- templates/components/to_edit_link.html | 9 +++++++++ templates/portfolios/task_orders/review.html | 21 +++++++++++++++----- templates/task_orders/new/review.html | 10 +--------- 3 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 templates/components/to_edit_link.html diff --git a/templates/components/to_edit_link.html b/templates/components/to_edit_link.html new file mode 100644 index 00000000..d4918eee --- /dev/null +++ b/templates/components/to_edit_link.html @@ -0,0 +1,9 @@ +{% from "components/edit_link.html" import EditLink %} + +{% macro TOEditLink(screen=1, anchor=None) %} +{% if task_order %} + {{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }} +{% else %} + {{ EditLink(url_for("task_orders.new", screen=screen, _anchor=anchor)) }} +{% endif %} +{% endmacro %} diff --git a/templates/portfolios/task_orders/review.html b/templates/portfolios/task_orders/review.html index 6c68e375..657e7976 100644 --- a/templates/portfolios/task_orders/review.html +++ b/templates/portfolios/task_orders/review.html @@ -2,7 +2,7 @@ {% set secondary_breadcrumb = "navigation.portfolio_navigation.breadcrumbs.funding" | translate %} -{% from "components/edit_link.html" import EditLink %} +{% from "components/to_edit_link.html" import TOEditLink %} {% from "components/required_label.html" import RequiredLabel %} {% from "components/icon.html" import Icon %} {% from "components/date_picker.html" import DatePicker %} @@ -42,15 +42,23 @@
-
{{ "task_orders.new.review.app_info"| translate }}
+
+ {{ "task_orders.new.review.app_info"| translate }} +
{% include "fragments/task_order_review/app_info.html" %}
-
{{ "task_orders.new.review.reporting"| translate }}
+
+ {{ "task_orders.new.review.reporting"| translate }} + {{ TOEditLink(screen=1, anchor="reporting") }} +
{% include "fragments/task_order_review/reporting.html" %}
-
{{ "task_orders.new.review.funding"| translate }}
+
+ {{ "task_orders.new.review.funding"| translate }} + {{ TOEditLink(screen=2) }} +
{% include "fragments/task_order_review/funding.html" %}
@@ -59,7 +67,10 @@

-
{{ "task_orders.new.review.oversight"| translate }}
+
+ {{ "task_orders.new.review.oversight"| translate }} + {{ TOEditLink(screen=3) }} +
{% include "fragments/task_order_review/oversight.html" %}
diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 8834da68..eaec89b4 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -1,6 +1,6 @@ {% extends 'task_orders/_new.html' %} -{% from "components/edit_link.html" import EditLink %} +{% from "components/to_edit_link.html" import TOEditLink %} {% from "components/required_label.html" import RequiredLabel %} {% from "components/icon.html" import Icon %} {% from "components/review_field.html" import ReviewField %} @@ -11,14 +11,6 @@ {% block form %} -{% macro TOEditLink(screen=1, anchor=None) %} -{% if task_order %} - {{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }} -{% else %} - {{ EditLink(url_for("task_orders.new", screen=screen, _anchor=anchor)) }} -{% endif %} -{% endmacro %} -

{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}

{% include "fragments/task_order_review/app_info.html" %} From e20240b878fa18d80a5ba73067083348eaad8c4b Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 19 Feb 2019 11:34:00 -0500 Subject: [PATCH 2/8] Pass task order to TOEditLink macro --- templates/components/to_edit_link.html | 4 ++-- templates/portfolios/task_orders/review.html | 6 +++--- templates/task_orders/new/review.html | 9 ++++----- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/templates/components/to_edit_link.html b/templates/components/to_edit_link.html index d4918eee..65737e24 100644 --- a/templates/components/to_edit_link.html +++ b/templates/components/to_edit_link.html @@ -1,8 +1,8 @@ {% from "components/edit_link.html" import EditLink %} -{% macro TOEditLink(screen=1, anchor=None) %} +{% macro TOEditLink(task_order=None, screen=1, anchor=None) %} {% if task_order %} - {{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }} + {{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }} {% else %} {{ EditLink(url_for("task_orders.new", screen=screen, _anchor=anchor)) }} {% endif %} diff --git a/templates/portfolios/task_orders/review.html b/templates/portfolios/task_orders/review.html index 657e7976..28bd8322 100644 --- a/templates/portfolios/task_orders/review.html +++ b/templates/portfolios/task_orders/review.html @@ -50,14 +50,14 @@
{{ "task_orders.new.review.reporting"| translate }} - {{ TOEditLink(screen=1, anchor="reporting") }} + {{ TOEditLink(task_order=task_order, screen=1, anchor="reporting") }}
{% include "fragments/task_order_review/reporting.html" %}
{{ "task_orders.new.review.funding"| translate }} - {{ TOEditLink(screen=2) }} + {{ TOEditLink(task_order=task_order, screen=2) }}
{% include "fragments/task_order_review/funding.html" %} @@ -69,7 +69,7 @@
{{ "task_orders.new.review.oversight"| translate }} - {{ TOEditLink(screen=3) }} + {{ TOEditLink(task_order=task_order, screen=3) }}
{% include "fragments/task_order_review/oversight.html" %}
diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index eaec89b4..e075c6af 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -11,12 +11,11 @@ {% block form %} - -

{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}

+

{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(task_order=task_order, screen=1) }}

{% include "fragments/task_order_review/app_info.html" %}
-

{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(screen=1, anchor="reporting") }}

+

{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(task_order=task_order, screen=1, anchor="reporting") }}

{{ @@ -84,11 +83,11 @@
-

{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(screen=2) }}

+

{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(task_order=task_order, screen=2) }}

{% include "fragments/task_order_review/funding.html" %}
-

{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(screen=3) }}

+

{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(task_order=task_order, screen=3) }}

{% include "fragments/task_order_review/oversight.html" %} {% endblock %} From 4ef8df016dbf6159da88fc64d7ee314613527ad2 Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 19 Feb 2019 11:36:59 -0500 Subject: [PATCH 3/8] Redirect user back to KO Review page if that is where they came from --- atst/routes/task_orders/new.py | 43 ++++++++++++++++++++++++++++----- templates/task_orders/_new.html | 10 +++++++- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index d9bee3b7..4c1d15bf 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -207,6 +207,33 @@ def new(screen, task_order_id=None, portfolio_id=None): if not TaskOrders.all_sections_complete(task_order): flash("task_order_draft") + if workflow.task_order: + ko_review_url = url_for( + "portfolios.ko_review", + portfolio_id=workflow.task_order.portfolio.id, + task_order_id=task_order_id, + _external=True, + ) + redirect_url = url_for( + "portfolios.ko_review", + portfolio_id=workflow.task_order.portfolio.id, + task_order_id=task_order_id, + ) + + if http_request.referrer == ko_review_url: + return render_template( + workflow.template, + current=screen, + task_order_id=task_order_id, + task_order=workflow.task_order, + portfolio_id=portfolio_id, + screens=workflow.display_screens, + form=workflow.form, + complete=workflow.is_complete, + from_ko_review=True, + next=redirect_url, + ) + return render_template( workflow.template, current=screen, @@ -229,15 +256,19 @@ def update(screen, task_order_id=None, portfolio_id=None): workflow = UpdateTaskOrderWorkflow( g.current_user, form_data, screen, task_order_id, portfolio_id ) + if workflow.validate(): workflow.update() - return redirect( - url_for( - "task_orders.new", - screen=screen + 1, - task_order_id=workflow.task_order.id, + if http_request.args.get("next"): + return redirect(http_request.args.get("next")) + else: + return redirect( + url_for( + "task_orders.new", + screen=screen + 1, + task_order_id=workflow.task_order.id, + ) ) - ) else: return render_template( workflow.template, diff --git a/templates/task_orders/_new.html b/templates/task_orders/_new.html index 37f1ce74..cc25c248 100644 --- a/templates/task_orders/_new.html +++ b/templates/task_orders/_new.html @@ -9,6 +9,10 @@ {% include "fragments/flash.html" %} {% block form_action %} + {% if from_ko_review %} +
+ {% endif %} + {% if task_order_id %} {% else %} @@ -39,7 +43,11 @@ {% block next %}
- + {% if from_ko_review %} + + {% else %} + + {% endif %}
{% endblock %} From 430afdd74ccbee31ffc8378095be8d207f3e202f Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 19 Feb 2019 14:20:29 -0500 Subject: [PATCH 4/8] Test redirect --- .../routes/task_orders/test_new_task_order.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/routes/task_orders/test_new_task_order.py b/tests/routes/task_orders/test_new_task_order.py index 0040b68c..cfeff1c9 100644 --- a/tests/routes/task_orders/test_new_task_order.py +++ b/tests/routes/task_orders/test_new_task_order.py @@ -237,6 +237,24 @@ def test_update_task_order_with_existing_task_order(task_order): assert workflow.task_order.start_date.strftime("%m/%d/%Y") == to_data["start_date"] +def test_update_to_redirects_to_ko_review(client, user_session, task_order): + ko = UserFactory.create() + task_order.contracting_officer = ko + user_session(ko) + url = url_for( + "portfolios.ko_review", + portfolio_id=task_order.portfolio.id, + task_order_id=task_order.id, + ) + response = client.post( + url_for("task_orders.new", screen=1, task_order_id=task_order.id, next=url) + ) + body = response.data.decode() + + assert url in body + assert response.status_code == 302 + + def test_other_text_not_saved_if_other_not_checked(task_order): to_data = { **TaskOrderFactory.dictionary(), From 8023e246fbbe247ea112636d98b68cc23b6dfa91 Mon Sep 17 00:00:00 2001 From: Montana Date: Wed, 20 Feb 2019 13:56:19 -0500 Subject: [PATCH 5/8] Simplify button copy logic --- templates/task_orders/_new.html | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/templates/task_orders/_new.html b/templates/task_orders/_new.html index cc25c248..77cdf69f 100644 --- a/templates/task_orders/_new.html +++ b/templates/task_orders/_new.html @@ -43,11 +43,7 @@ {% block next %}
- {% if from_ko_review %} - - {% else %} - - {% endif %} +
{% endblock %} From 6628a1441e704eed2dbe00981027825b8ac2358b Mon Sep 17 00:00:00 2001 From: Montana Date: Thu, 21 Feb 2019 09:32:41 -0500 Subject: [PATCH 6/8] Refactor redirect to make more readable --- atst/routes/task_orders/new.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 4c1d15bf..868b0a8d 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -260,15 +260,14 @@ def update(screen, task_order_id=None, portfolio_id=None): if workflow.validate(): workflow.update() if http_request.args.get("next"): - return redirect(http_request.args.get("next")) + redirect_url = http_request.args.get("next") else: - return redirect( - url_for( - "task_orders.new", - screen=screen + 1, - task_order_id=workflow.task_order.id, - ) + redirect_url = url_for( + "task_orders.new", + screen=screen + 1, + task_order_id=workflow.task_order.id, ) + return redirect(redirect_url) else: return render_template( workflow.template, From 12706c3d45176fdbb28e44eaff9c07848333f04b Mon Sep 17 00:00:00 2001 From: Montana Date: Thu, 21 Feb 2019 10:59:33 -0500 Subject: [PATCH 7/8] Refactor task order route to check for request args instead of request.referrer --- atst/routes/task_orders/new.py | 52 +++++++------------- templates/components/to_edit_link.html | 9 ---- templates/portfolios/task_orders/review.html | 8 +-- templates/task_orders/_new.html | 4 +- templates/task_orders/new/review.html | 11 +++-- 5 files changed, 29 insertions(+), 55 deletions(-) delete mode 100644 templates/components/to_edit_link.html diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 868b0a8d..eff1584b 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -200,50 +200,32 @@ def get_started(): @task_orders_bp.route("/task_orders/new//") @task_orders_bp.route("/portfolios//task_orders/new/") def new(screen, task_order_id=None, portfolio_id=None): - workflow = ShowTaskOrderWorkflow(g.current_user, screen, task_order_id) - if task_order_id and screen is 4: task_order = TaskOrders.get(g.current_user, task_order_id) if not TaskOrders.all_sections_complete(task_order): flash("task_order_draft") - if workflow.task_order: - ko_review_url = url_for( - "portfolios.ko_review", - portfolio_id=workflow.task_order.portfolio.id, - task_order_id=task_order_id, - _external=True, - ) - redirect_url = url_for( - "portfolios.ko_review", - portfolio_id=workflow.task_order.portfolio.id, - task_order_id=task_order_id, - ) + workflow = ShowTaskOrderWorkflow(g.current_user, screen, task_order_id) + template_args = { + "current": screen, + "task_order_id": task_order_id, + "portfolio_id": portfolio_id, + "screens": workflow.display_screens, + "form": workflow.form, + "complete": workflow.is_complete, + } - if http_request.referrer == ko_review_url: - return render_template( - workflow.template, - current=screen, + if workflow.task_order: + template_args["task_order"] = workflow.task_order + if http_request.args.get("ko_edit"): + template_args["ko_edit"] = True + template_args["next"] = url_for( + "portfolios.ko_review", + portfolio_id=workflow.task_order.portfolio.id, task_order_id=task_order_id, - task_order=workflow.task_order, - portfolio_id=portfolio_id, - screens=workflow.display_screens, - form=workflow.form, - complete=workflow.is_complete, - from_ko_review=True, - next=redirect_url, ) - return render_template( - workflow.template, - current=screen, - task_order_id=task_order_id, - task_order=workflow.task_order, - portfolio_id=portfolio_id, - screens=workflow.display_screens, - form=workflow.form, - complete=workflow.is_complete, - ) + return render_template(workflow.template, **template_args) @task_orders_bp.route("/task_orders/new/", methods=["POST"]) diff --git a/templates/components/to_edit_link.html b/templates/components/to_edit_link.html deleted file mode 100644 index 65737e24..00000000 --- a/templates/components/to_edit_link.html +++ /dev/null @@ -1,9 +0,0 @@ -{% from "components/edit_link.html" import EditLink %} - -{% macro TOEditLink(task_order=None, screen=1, anchor=None) %} -{% if task_order %} - {{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }} -{% else %} - {{ EditLink(url_for("task_orders.new", screen=screen, _anchor=anchor)) }} -{% endif %} -{% endmacro %} diff --git a/templates/portfolios/task_orders/review.html b/templates/portfolios/task_orders/review.html index 28bd8322..92176252 100644 --- a/templates/portfolios/task_orders/review.html +++ b/templates/portfolios/task_orders/review.html @@ -2,7 +2,7 @@ {% set secondary_breadcrumb = "navigation.portfolio_navigation.breadcrumbs.funding" | translate %} -{% from "components/to_edit_link.html" import TOEditLink %} +{% from "components/edit_link.html" import EditLink %} {% from "components/required_label.html" import RequiredLabel %} {% from "components/icon.html" import Icon %} {% from "components/date_picker.html" import DatePicker %} @@ -50,14 +50,14 @@
{{ "task_orders.new.review.reporting"| translate }} - {{ TOEditLink(task_order=task_order, screen=1, anchor="reporting") }} + {{ EditLink(url_for("task_orders.new", screen=1, task_order_id=task_order.id, _anchor="reporting", ko_edit=True)) }}
{% include "fragments/task_order_review/reporting.html" %}
{{ "task_orders.new.review.funding"| translate }} - {{ TOEditLink(task_order=task_order, screen=2) }} + {{ EditLink(url_for("task_orders.new", screen=2, task_order_id=task_order.id, _anchor="reporting", ko_edit=True)) }}
{% include "fragments/task_order_review/funding.html" %} @@ -69,7 +69,7 @@
{{ "task_orders.new.review.oversight"| translate }} - {{ TOEditLink(task_order=task_order, screen=3) }} + {{ EditLink(url_for("task_orders.new", screen=3, task_order_id=task_order.id, _anchor="reporting", ko_edit=True)) }}
{% include "fragments/task_order_review/oversight.html" %}
diff --git a/templates/task_orders/_new.html b/templates/task_orders/_new.html index 77cdf69f..415e2c65 100644 --- a/templates/task_orders/_new.html +++ b/templates/task_orders/_new.html @@ -9,7 +9,7 @@ {% include "fragments/flash.html" %} {% block form_action %} - {% if from_ko_review %} + {% if ko_edit %} {% endif %} @@ -43,7 +43,7 @@ {% block next %}
- +
{% endblock %} diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index e075c6af..a505e222 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -1,6 +1,6 @@ {% extends 'task_orders/_new.html' %} -{% from "components/to_edit_link.html" import TOEditLink %} +{% from "components/edit_link.html" import EditLink %} {% from "components/required_label.html" import RequiredLabel %} {% from "components/icon.html" import Icon %} {% from "components/review_field.html" import ReviewField %} @@ -11,11 +11,12 @@ {% block form %} -

{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(task_order=task_order, screen=1) }}

+

{{ "task_orders.new.review.app_info"| translate }} {{ EditLink(url_for("task_orders.new", screen=1, task_order_id=task_order.id)) }} +

{% include "fragments/task_order_review/app_info.html" %}
-

{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(task_order=task_order, screen=1, anchor="reporting") }}

+

{{ "task_orders.new.review.reporting"| translate }} {{ EditLink(url_for("task_orders.new", screen=1, task_order_id=task_order.id, anchor="reporting")) }}

{{ @@ -83,11 +84,11 @@
-

{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(task_order=task_order, screen=2) }}

+

{{ "task_orders.new.review.funding"| translate }} {{ EditLink(url_for("task_orders.new", screen=2, task_order_id=task_order.id)) }}

{% include "fragments/task_order_review/funding.html" %}
-

{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(task_order=task_order, screen=3) }}

+

{{ "task_orders.new.review.oversight"| translate }} {{ EditLink(url_for("task_orders.new", screen=3, task_order_id=task_order.id)) }}

{% include "fragments/task_order_review/oversight.html" %} {% endblock %} From 772ca756881e0b5f6290f94e978580577c1477aa Mon Sep 17 00:00:00 2001 From: Montana Date: Thu, 21 Feb 2019 14:36:43 -0500 Subject: [PATCH 8/8] Refactor form action for new task order templates --- atst/routes/task_orders/new.py | 9 +++++++++ templates/task_orders/_new.html | 10 +--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index eff1584b..8ad10f27 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -215,6 +215,12 @@ def new(screen, task_order_id=None, portfolio_id=None): "complete": workflow.is_complete, } + url_args = {"screen": screen} + if task_order_id: + url_args["task_order_id"] = task_order_id + else: + url_args["portfolio_id"] = portfolio_id + if workflow.task_order: template_args["task_order"] = workflow.task_order if http_request.args.get("ko_edit"): @@ -224,6 +230,9 @@ def new(screen, task_order_id=None, portfolio_id=None): portfolio_id=workflow.task_order.portfolio.id, task_order_id=task_order_id, ) + url_args["next"] = template_args["next"] + + template_args["action_url"] = url_for("task_orders.update", **url_args) return render_template(workflow.template, **template_args) diff --git a/templates/task_orders/_new.html b/templates/task_orders/_new.html index 415e2c65..d4b7c48a 100644 --- a/templates/task_orders/_new.html +++ b/templates/task_orders/_new.html @@ -9,15 +9,7 @@ {% include "fragments/flash.html" %} {% block form_action %} - {% if ko_edit %} - - {% endif %} - - {% if task_order_id %} - - {% else %} - - {% endif %} + {% endblock %}