From 95fa71fc03f38ffa79740b21cd31a39b5bc5df98 Mon Sep 17 00:00:00 2001 From: dandds Date: Fri, 8 Feb 2019 15:13:10 -0500 Subject: [PATCH] only send officer invitations if MO portion of TO form is complete --- atst/routes/task_orders/invite.py | 24 ++++++++++++++---------- tests/routes/task_orders/test_invite.py | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/atst/routes/task_orders/invite.py b/atst/routes/task_orders/invite.py index 1fac0831..b0268f00 100644 --- a/atst/routes/task_orders/invite.py +++ b/atst/routes/task_orders/invite.py @@ -51,15 +51,19 @@ def update_officer_invitations(user, task_order): @task_orders_bp.route("/task_orders/invite/", methods=["POST"]) def invite(task_order_id): task_order = TaskOrders.get(g.current_user, task_order_id) - # TODO: only do this if TO is complete - update_officer_invitations(g.current_user, task_order) + if TaskOrders.all_sections_complete(task_order): + update_officer_invitations(g.current_user, task_order) - portfolio = task_order.portfolio - flash("task_order_congrats", portfolio=portfolio) - return redirect( - url_for( - "portfolios.view_task_order", - portfolio_id=task_order.portfolio_id, - task_order_id=task_order.id, + portfolio = task_order.portfolio + flash("task_order_congrats", portfolio=portfolio) + return redirect( + url_for( + "portfolios.view_task_order", + portfolio_id=task_order.portfolio_id, + task_order_id=task_order.id, + ) + ) + else: + return redirect( + url_for("task_orders.new", screen=4, task_order_id=task_order.id) ) - ) diff --git a/tests/routes/task_orders/test_invite.py b/tests/routes/task_orders/test_invite.py index b00b1e17..cd07db23 100644 --- a/tests/routes/task_orders/test_invite.py +++ b/tests/routes/task_orders/test_invite.py @@ -72,3 +72,22 @@ def test_does_not_resend_officer_invitation(client, user_session): for i in range(2): client.post(url_for("task_orders.invite", task_order_id=task_order.id)) assert len(contracting_officer.invitations) == 1 + + +def test_does_not_invite_if_task_order_incomplete(client, user_session, queue): + task_order = TaskOrderFactory.create( + scope=None, ko_invite=True, cor_invite=True, so_invite=True + ) + portfolio = task_order.portfolio + + user_session(portfolio.owner) + response = client.post(url_for("task_orders.invite", task_order_id=task_order.id)) + + # redirected to review screen + assert response.headers["Location"] == url_for( + "task_orders.new", screen=4, task_order_id=task_order.id, _external=True + ) + # only owner is portfolio member + assert len(portfolio.members) == 1 + # no email invitations are enqueued + assert len(queue.get_queue()) == 0