diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index d9bee3b7..8ad10f27 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -200,23 +200,41 @@ 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") - 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, - ) + 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, + } + + 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"): + 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, + ) + url_args["next"] = template_args["next"] + + template_args["action_url"] = url_for("task_orders.update", **url_args) + + return render_template(workflow.template, **template_args) @task_orders_bp.route("/task_orders/new/", methods=["POST"]) @@ -229,15 +247,18 @@ 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( + if http_request.args.get("next"): + redirect_url = http_request.args.get("next") + else: + 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, diff --git a/templates/portfolios/task_orders/review.html b/templates/portfolios/task_orders/review.html index 6c68e375..92176252 100644 --- a/templates/portfolios/task_orders/review.html +++ b/templates/portfolios/task_orders/review.html @@ -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 }} + {{ 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 }}
+
+ {{ "task_orders.new.review.funding"| translate }} + {{ 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" %}
@@ -59,7 +67,10 @@

-
{{ "task_orders.new.review.oversight"| translate }}
+
+ {{ "task_orders.new.review.oversight"| translate }} + {{ 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 37f1ce74..d4b7c48a 100644 --- a/templates/task_orders/_new.html +++ b/templates/task_orders/_new.html @@ -9,11 +9,7 @@ {% include "fragments/flash.html" %} {% block form_action %} - {% if task_order_id %} -
- {% else %} - - {% endif %} + {% endblock %}
@@ -39,7 +35,7 @@ {% block next %}
- +
{% endblock %} diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 8834da68..a505e222 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -11,20 +11,12 @@ {% 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) }}

+

{{ "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(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")) }}

{{ @@ -92,11 +84,11 @@
-

{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(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(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 %} 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(),