Delete TO draft when click "delete it" on cancel modal

This commit is contained in:
richard-dds 2019-08-08 15:31:07 -04:00
parent 02900ff771
commit 7fdb27ddbf
2 changed files with 13 additions and 22 deletions

View File

@ -39,6 +39,7 @@ def render_task_orders_edit(template, portfolio_id=None, task_order_id=None, for
"task_orders.cancel_edit", "task_orders.cancel_edit",
task_order_id=task_order_id, task_order_id=task_order_id,
portfolio_id=portfolio_id, portfolio_id=portfolio_id,
save=False,
) )
return render_template(template, **render_args) return render_template(template, **render_args)
@ -137,7 +138,9 @@ def submit_form_step_one_add_pdf(portfolio_id=None, task_order_id=None):
@task_orders_bp.route("/task_orders/<task_order_id>/form/cancel", methods=["POST"]) @task_orders_bp.route("/task_orders/<task_order_id>/form/cancel", methods=["POST"])
@user_can(Permissions.CREATE_TASK_ORDER, message="cancel task order form") @user_can(Permissions.CREATE_TASK_ORDER, message="cancel task order form")
def cancel_edit(task_order_id=None, portfolio_id=None): def cancel_edit(task_order_id=None, portfolio_id=None):
save = http_request.args.get("save", False) # Either save the currently entered data, or delete the TO
save = http_request.args.get("save", "True").lower() == "true"
if save: if save:
form_data = {**http_request.form} form_data = {**http_request.form}
form = None form = None
@ -155,6 +158,9 @@ def cancel_edit(task_order_id=None, portfolio_id=None):
task_order = TaskOrders.create( task_order = TaskOrders.create(
g.current_user, portfolio_id, **form.data g.current_user, portfolio_id, **form.data
) )
elif not save and task_order_id:
if task_order_id:
TaskOrders.delete(task_order_id)
return redirect( return redirect(
url_for("task_orders.portfolio_funding", portfolio_id=g.portfolio.id) url_for("task_orders.portfolio_funding", portfolio_id=g.portfolio.id)

View File

@ -334,22 +334,21 @@ def test_cancel_can_create_new_to(client, user_session, portfolio):
assert response.status_code == 302 assert response.status_code == 302
def test_cancel_edit_does_not_save_invalid_form_input(client, user_session, session): def test_cancel_edit_causes_to_to_be_deleted(client, user_session, session):
task_order = TaskOrderFactory.create() task_order = TaskOrderFactory.create()
user_session(task_order.portfolio.owner) user_session(task_order.portfolio.owner)
bad_data = {"clins-0-jedi_clin_type": "foo"}
response = client.post( response = client.post(
url_for("task_orders.cancel_edit", task_order_id=task_order.id, save=True), url_for("task_orders.cancel_edit", task_order_id=task_order.id, save=False),
data=bad_data, data={},
) )
assert response.status_code == 302 assert response.status_code == 302
# CLINs should be unchanged # TO should be deleted
updated_task_order = session.query(TaskOrder).get(task_order.id) updated_task_order = session.query(TaskOrder).get(task_order.id)
assert updated_task_order.clins == task_order.clins assert updated_task_order is None
def test_cancel_edit_on_invalid_input_does_not_flash( def test_cancel_edit_and_save_with_invalid_input_does_not_flash(
app, client, user_session, session app, client, user_session, session
): ):
task_order = TaskOrderFactory.create() task_order = TaskOrderFactory.create()
@ -365,20 +364,6 @@ def test_cancel_edit_on_invalid_input_does_not_flash(
assert len(get_flashed_messages()) == 0 assert len(get_flashed_messages()) == 0
def test_cancel_edit_without_saving(client, user_session, session):
task_order = TaskOrderFactory.create(number=None)
user_session(task_order.portfolio.owner)
response = client.post(
url_for("task_orders.cancel_edit", task_order_id=task_order.id),
data={"number": "7643906432984"},
)
assert response.status_code == 302
# TO number should be unchanged
updated_task_order = session.query(TaskOrder).get(task_order.id)
assert updated_task_order.number is None
@pytest.mark.skip(reason="Reevaluate how form handles invalid data") @pytest.mark.skip(reason="Reevaluate how form handles invalid data")
def test_task_orders_update_invalid_data(client, user_session, portfolio): def test_task_orders_update_invalid_data(client, user_session, portfolio):
user_session(portfolio.owner) user_session(portfolio.owner)