Merge pull request #947 from dod-ccpo/task-order-save

Redirect user to TO edit page when they save incomplete state.
This commit is contained in:
dandds 2019-06-19 13:13:03 -04:00 committed by GitHub
commit 7f469bcd89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 8 deletions

View File

@ -38,6 +38,8 @@ def edit(portfolio_id=None, task_order_id=None):
@task_orders_bp.route("/task_orders/<task_order_id>", methods=["POST"])
@user_can(Permissions.CREATE_TASK_ORDER, message="create new task order")
def update(portfolio_id=None, task_order_id=None):
# TODO: I think saving and incomplete TO and saving a finished one should
# be different routes. It would make the route functions more readable.
form_data = {**http_request.form, **http_request.files}
form = None
@ -55,14 +57,18 @@ def update(portfolio_id=None, task_order_id=None):
else:
task_order = TaskOrders.create(g.current_user, portfolio_id, **form.data)
# TO is finished and user can review and submit
if task_order.is_completed and http_request.args.get("review"):
return redirect(
url_for("task_orders.review_task_order", task_order_id=task_order.id)
)
flash("task_order_draft")
if task_order.is_completed:
# User is trying to review and submit but the TO is not finished
elif http_request.args.get("review"):
return render_task_orders_edit(portfolio_id, task_order_id, form), 400
# User is saving valid but incomplete TO state
else:
flash("task_order_draft")
return redirect(url_for("task_orders.edit", task_order_id=task_order.id))
return render_task_orders_edit(portfolio_id, task_order_id, form), 400
else:
return render_task_orders_edit(portfolio_id, task_order_id, form), 400

View File

@ -66,6 +66,24 @@ def test_task_orders_update(client, user_session, portfolio):
assert task_order.pdf.filename == pdf_upload.filename
def test_task_orders_save_incomplete(client, user_session, portfolio):
user_session(portfolio.owner)
form_data = {
"number": "0123456789",
"clins-0-jedi_clin_type": "JEDI_CLIN_1",
"clins-0-clin_number": "12312",
}
response = client.post(
url_for("task_orders.update", portfolio_id=portfolio.id), data=form_data
)
assert response.status_code == 302
task_order = portfolio.task_orders[0]
expected_url = url_for(
"task_orders.edit", task_order_id=task_order.id, _external=True
)
assert response.location == expected_url
def test_task_orders_edit_existing_to(client, user_session, task_order):
user_session(task_order.creator)
response = client.get(url_for("task_orders.edit", task_order_id=task_order.id))
@ -109,7 +127,7 @@ def test_task_orders_update(client, user_session, portfolio, pdf_upload):
url_for("task_orders.update", task_order_id=task_order.id), data=data
)
assert task_order.number == data["number"]
assert response.status_code == 400
assert response.status_code == 302
def test_task_orders_update_pdf(
@ -122,7 +140,7 @@ def test_task_orders_update_pdf(
url_for("task_orders.update", task_order_id=task_order.id), data=data
)
assert task_order.pdf.filename == pdf_upload2.filename
assert response.status_code == 400
assert response.status_code == 302
def test_task_orders_update_delete_pdf(client, user_session, portfolio, pdf_upload):
@ -133,7 +151,7 @@ def test_task_orders_update_delete_pdf(client, user_session, portfolio, pdf_uplo
url_for("task_orders.update", task_order_id=task_order.id), data=data
)
assert task_order.pdf is None
assert response.status_code == 400
assert response.status_code == 302
def test_cannot_get_to_review_screen_with_incomplete_data(