Add second step

This commit is contained in:
leigh-mil 2019-07-16 10:34:11 -04:00
parent 45390835ed
commit 6ab3e24883
3 changed files with 139 additions and 21 deletions

View File

@ -27,21 +27,9 @@ def render_task_orders_edit(template, portfolio_id=None, task_order_id=None, for
return render_template(template, **render_args) return render_template(template, **render_args)
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/step_1") def update_task_order(
@task_orders_bp.route("/task_orders/<task_order_id>/step_1") form_data, next_page, current_template, portfolio_id=None, task_order_id=None
@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/<portfolio_id>/task_orders/step-1", methods=["POST"])
@task_orders_bp.route("/task_orders/<task_order_id>/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
form = None form = None
if task_order_id: if task_order_id:
task_order = TaskOrders.get(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: else:
task_order = TaskOrders.create(g.current_user, portfolio_id, **form.data) task_order = TaskOrders.create(g.current_user, portfolio_id, **form.data)
return redirect( return redirect(url_for(next_page, task_order_id=task_order.id))
url_for(
"task_orders.portfolio_funding", portfolio_id=task_order.portfolio_id
)
)
else: else:
return ( return (
render_task_orders_edit( render_task_orders_edit(
"task_orders/step_1.html", portfolio_id, task_order_id, form current_template, portfolio_id, task_order_id, form
), ),
400, 400,
) )
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/step_1")
@task_orders_bp.route("/task_orders/<task_order_id>/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/<portfolio_id>/task_orders/step-1", methods=["POST"])
@task_orders_bp.route("/task_orders/<task_order_id>/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/<task_order_id>/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/<task_order_id>/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/<portfolio_id>/task_orders/new") @task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new")
@task_orders_bp.route("/task_orders/<task_order_id>/edit") @task_orders_bp.route("/task_orders/<task_order_id>/edit")
@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") @user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form")

View File

@ -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) %}
<base-form inline-template>
<form id="upload-to-pdf" action='{{ action }}' method="POST" autocomplete="off" enctype="multipart/form-data">
{{ form.csrf_token }}
{% call StickyCTA(text=('task_orders.form.sticky_header_text' | translate )) %}
<span class="action-group">
<input
type="submit"
formaction="{{ action }}"
tabindex="0"
:disabled="!changed"
value="Next: Add Base CLIN"
form="upload-to-pdf"
class="usa-button usa-button-primary">
<input
type="button"
class="usa-button usa-button-secondary"
tabindex="0"
value="Previous"
form="upload-to-pdf"/>
<a
href="{{ cancel_url }}"
class="action-group__action icon-link">
{{ "common.cancel" | translate }}
</a>
</span>
{% endcall %}
<div class="h1">
{{ 'task_orders.form.add_to_header' | translate }}
</div>
{{ TextInput(form.number, validation='taskOrderNumber', optional=False) }}
</form>
</base-form>
{% endblock %}

View File

@ -53,6 +53,26 @@ def test_task_orders_upload_to_pdf(
assert task_order.pdf.filename == pdf_upload.filename 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): def test_task_orders_save_incomplete(client, user_session, portfolio):
user_session(portfolio.owner) user_session(portfolio.owner)
form_data = { form_data = {
@ -92,6 +112,27 @@ def test_task_orders_upload_to_pdf_existing_to(
assert task_order.pdf.filename == pdf_upload.filename 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): def test_task_orders_update_existing_to(client, user_session, task_order):
user_session(task_order.creator) user_session(task_order.creator)
form_data = { form_data = {