diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 35cf48f1..97f3d0c1 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -27,21 +27,9 @@ def render_task_orders_edit(template, portfolio_id=None, task_order_id=None, for return render_template(template, **render_args) -@task_orders_bp.route("/portfolios//task_orders/step_1") -@task_orders_bp.route("/task_orders//step_1") -@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") -def add_to_pdf(portfolio_id=None, task_order_id=None): - return render_task_orders_edit( - "task_orders/step_1.html", portfolio_id, task_order_id - ) - - -@task_orders_bp.route("/portfolios//task_orders/step-1", methods=["POST"]) -@task_orders_bp.route("/task_orders//step_1", methods=["POST"]) -@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") -def upload_to_pdf(portfolio_id=None, task_order_id=None): - form_data = {**http_request.form, **http_request.files} - # todo: pass in route for step 2 +def update_task_order( + form_data, next_page, current_template, portfolio_id=None, task_order_id=None +): form = None if task_order_id: task_order = TaskOrders.get(task_order_id) @@ -57,20 +45,64 @@ def upload_to_pdf(portfolio_id=None, task_order_id=None): else: task_order = TaskOrders.create(g.current_user, portfolio_id, **form.data) - return redirect( - url_for( - "task_orders.portfolio_funding", portfolio_id=task_order.portfolio_id - ) - ) + return redirect(url_for(next_page, task_order_id=task_order.id)) else: return ( render_task_orders_edit( - "task_orders/step_1.html", portfolio_id, task_order_id, form + current_template, portfolio_id, task_order_id, form ), 400, ) +@task_orders_bp.route("/portfolios//task_orders/step_1") +@task_orders_bp.route("/task_orders//step_1") +@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") +def add_to_pdf(portfolio_id=None, task_order_id=None): + return render_task_orders_edit( + "task_orders/step_1.html", + portfolio_id=portfolio_id, + task_order_id=task_order_id, + ) + + +@task_orders_bp.route("/portfolios//task_orders/step-1", methods=["POST"]) +@task_orders_bp.route("/task_orders//step_1", methods=["POST"]) +@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") +def upload_to_pdf(portfolio_id=None, task_order_id=None): + form_data = {**http_request.form, **http_request.files} + next_page = "task_orders.add_to_number" + current_template = "task_orders/step_1.html" + + return update_task_order( + form_data, + next_page, + current_template, + portfolio_id=portfolio_id, + task_order_id=task_order_id, + ) + + +@task_orders_bp.route("/task_orders//step_2") +@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") +def add_to_number(task_order_id): + return render_task_orders_edit( + "task_orders/step_2.html", task_order_id=task_order_id + ) + + +@task_orders_bp.route("/task_orders//step_2", methods=["POST"]) +@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") +def update_to_number(task_order_id): + form_data = {**http_request.form} + next_page = "task_orders.add_to_pdf" + current_template = "task_orders/step_2.html" + + return update_task_order( + form_data, next_page, current_template, task_order_id=task_order_id + ) + + @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_2.html b/templates/task_orders/step_2.html new file mode 100644 index 00000000..4e52d81c --- /dev/null +++ b/templates/task_orders/step_2.html @@ -0,0 +1,45 @@ +{% extends "portfolios/base.html" %} + +{% from "components/sticky_cta.html" import StickyCTA %} +{% from 'components/text_input.html' import TextInput %} + +{% block portfolio_content %} + {% set action = url_for("task_orders.update_to_number", task_order_id=task_order_id) %} + + +
+ {{ form.csrf_token }} + + {% call StickyCTA(text=('task_orders.form.sticky_header_text' | translate )) %} + + + + + {{ "common.cancel" | translate }} + + + {% endcall %} + +
+ {{ 'task_orders.form.add_to_header' | translate }} +
+ + {{ TextInput(form.number, validation='taskOrderNumber', optional=False) }} + +
+
+{% endblock %} diff --git a/tests/routes/task_orders/test_new.py b/tests/routes/task_orders/test_new.py index 2ce8e7bb..cf53d0b3 100644 --- a/tests/routes/task_orders/test_new.py +++ b/tests/routes/task_orders/test_new.py @@ -53,6 +53,26 @@ def test_task_orders_upload_to_pdf( assert task_order.pdf.filename == pdf_upload.filename +def test_task_orders_add_to_number(client, user_session, task_order): + user_session(task_order.creator) + response = client.get( + url_for("task_orders.add_to_number", task_order_id=task_order.id) + ) + assert response.status_code == 200 + + +def test_task_orders_update_to_number(client, user_session, task_order): + user_session(task_order.creator) + form_data = {"number": "1234567890"} + response = client.post( + url_for("task_orders.update_to_number", task_order_id=task_order.id), + data=form_data, + ) + + assert response.status_code == 302 + assert task_order.number == "1234567890" + + def test_task_orders_save_incomplete(client, user_session, portfolio): user_session(portfolio.owner) form_data = { @@ -92,6 +112,27 @@ def test_task_orders_upload_to_pdf_existing_to( assert task_order.pdf.filename == pdf_upload.filename +def test_task_orders_add_to_number_existing_to(client, user_session, task_order): + user_session(task_order.creator) + response = client.get( + url_for("task_orders.add_to_number", task_order_id=task_order.id) + ) + assert response.status_code == 200 + + +def test_task_orders_update_to_number_existing_to(client, user_session, task_order): + user_session(task_order.creator) + form_data = {"number": "0000000000"} + original_number = task_order.number + response = client.post( + url_for("task_orders.upload_to_pdf", task_order_id=task_order.id), + data=form_data, + ) + assert response.status_code == 302 + assert task_order.number == "0000000000" + assert task_order.number != original_number + + def test_task_orders_update_existing_to(client, user_session, task_order): user_session(task_order.creator) form_data = {