diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 5c9a9f4a..de1d71a5 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -3,7 +3,7 @@ from flask import g, redirect, render_template, request as http_request, url_for from . import task_orders_bp from atst.domain.authz.decorator import user_can_access_decorator as user_can from atst.domain.task_orders import TaskOrders -from atst.forms.task_order import TaskOrderForm +from atst.forms.task_order import TaskOrderForm, SignatureForm from atst.models.permissions import Permissions from atst.utils.flash import formatted_flash as flash @@ -131,6 +131,14 @@ def review(task_order_id): ) +@task_orders_bp.route("/task_orders//step_5") +@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") +def confirm_signature(task_order_id): + return render_task_orders_edit( + "task_orders/step_5.html", task_order_id=task_order_id, form=SignatureForm() + ) + + @task_orders_bp.route("/portfolios//task_orders/new") @task_orders_bp.route("/task_orders//edit") @user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") diff --git a/templates/task_orders/step_4.html b/templates/task_orders/step_4.html index 1c06804c..8d923f8d 100644 --- a/templates/task_orders/step_4.html +++ b/templates/task_orders/step_4.html @@ -8,13 +8,13 @@ {% block portfolio_content %} {% set action = url_for("task_orders.update_number", task_order_id=task_order_id) %} -
+
{{ form.csrf_token }} {% call StickyCTA(text=('task_orders.form.sticky_header_text' | translate )) %} Next: Submit Task Order diff --git a/templates/task_orders/step_5.html b/templates/task_orders/step_5.html new file mode 100644 index 00000000..a0f768d5 --- /dev/null +++ b/templates/task_orders/step_5.html @@ -0,0 +1,50 @@ +{% extends "portfolios/base.html" %} + +{% from "components/alert.html" import Alert %} +{% from "components/checkbox_input.html" import CheckboxInput %} +{% from "components/sticky_cta.html" import StickyCTA %} + +{% block portfolio_content %} + {% set action = url_for("task_orders.submit_task_order", task_order_id=task_order_id) %} + + +
+ {{ form.csrf_token }} + + {% call StickyCTA(text=('task_orders.form.sticky_header_text' | translate )) %} + + + + + {{ "common.cancel" | translate }} + + + {% endcall %} + +
+

Signature confirmation: Task Order #{{task_order.number}}

+
+ + {% call Alert('', + message="All task orders require a Contracting Officer signature." + ) %} + + {{ CheckboxInput(form.signature) }} + {% endcall %} +
+
+{% endblock %} diff --git a/tests/routes/task_orders/test_new.py b/tests/routes/task_orders/test_new.py index 3b3abfc6..fdf9a987 100644 --- a/tests/routes/task_orders/test_new.py +++ b/tests/routes/task_orders/test_new.py @@ -107,6 +107,14 @@ def test_task_orders_review(client, user_session, task_order): assert response.status_code == 200 +def test_task_orders_confirm_signature(client, user_session, task_order): + user_session(task_order.creator) + response = client.get( + url_for("task_orders.confirm_signature", task_order_id=task_order.id) + ) + assert response.status_code == 200 + + def test_task_orders_new_flow(): pass