diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 4c9d40e7..3d115745 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -122,10 +122,7 @@ class ShowTaskOrderWorkflow: def can_edit_pf_attributes(self, portfolio_id=None): if self.task_order: - if ( - self.task_order.portfolio.num_task_orders > 1 - or not portfolio_id is None - ): + if self.task_order.portfolio.num_task_orders > 1: return False elif portfolio_id: if self.get_portfolio(portfolio_id).num_task_orders > 0: @@ -237,6 +234,10 @@ def new(screen, task_order_id=None, portfolio_id=None): "form": workflow.form, "complete": workflow.is_complete, } + if not workflow.can_edit_pf_attributes(portfolio_id): + template_args["portfolio"] = workflow.get_portfolio( + user=g.current_user, portfolio_id=portfolio_id + ) if not workflow.can_edit_pf_attributes(portfolio_id): template_args["portfolio"] = workflow.get_portfolio(portfolio_id=portfolio_id) @@ -246,10 +247,11 @@ def new(screen, task_order_id=None, portfolio_id=None): if not TaskOrders.all_sections_complete(task_order): flash("task_order_draft") - if portfolio_id: - template_args["portfolio"] = Portfolios.get(g.current_user, portfolio_id) - if screen == 1: - workflow.form = task_order_form.AppInfoWithExistingPortfolioForm() + if screen == 1: + if portfolio_id or workflow.task_order.portfolio.num_task_orders > 1: + workflow.form = task_order_form.AppInfoWithExistingPortfolioForm( + obj=workflow.task_order + ) url_args = {"screen": screen} if task_order_id: diff --git a/tests/routes/task_orders/test_new_task_order.py b/tests/routes/task_orders/test_new_task_order.py index e600f7db..6b8dbf37 100644 --- a/tests/routes/task_orders/test_new_task_order.py +++ b/tests/routes/task_orders/test_new_task_order.py @@ -48,10 +48,13 @@ def test_new_to_can_edit_pf_attributes_screen_1(): assert workflow.can_edit_pf_attributes(portfolio.id) -def test_new_to_can_edit_pf_attributes_on_return_to_screen_1(): +def test_new_pf_can_edit_pf_attributes_on_back_navigation(): portfolio = PortfolioFactory.create() - workflow = ShowTaskOrderWorkflow(user=portfolio.owner) - assert workflow.can_edit_pf_attributes() + pf_task_order = TaskOrderFactory(portfolio=portfolio) + pf_workflow = ShowTaskOrderWorkflow( + user=pf_task_order.creator, task_order_id=pf_task_order.id + ) + assert pf_workflow.can_edit_pf_attributes() def test_to_on_pf_cannot_edit_pf_attributes(): @@ -60,10 +63,7 @@ def test_to_on_pf_cannot_edit_pf_attributes(): workflow = ShowTaskOrderWorkflow(user=portfolio.owner) assert portfolio.num_task_orders == 1 - # case: TO is created from am existing portfolio assert not workflow.can_edit_pf_attributes(portfolio.id) - # case: Portfolio is being created and user navigates back to app_info screen - assert workflow.can_edit_pf_attributes() second_task_order = TaskOrderFactory(portfolio=portfolio) workflow = ShowTaskOrderWorkflow( @@ -72,6 +72,7 @@ def test_to_on_pf_cannot_edit_pf_attributes(): assert portfolio.num_task_orders > 1 assert not workflow.can_edit_pf_attributes() + def test_get_portfolio_when_task_order_exists(): portfolio = PortfolioFactory.create() task_order = TaskOrderFactory(portfolio=portfolio)