Add two workflow methods
This commit is contained in:
parent
4a100f913f
commit
be192081bc
@ -120,6 +120,23 @@ class ShowTaskOrderWorkflow:
|
||||
else:
|
||||
return False
|
||||
|
||||
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
|
||||
):
|
||||
return False
|
||||
elif portfolio_id:
|
||||
if self.get_portfolio(portfolio_id).num_task_orders > 0:
|
||||
return False
|
||||
return True
|
||||
|
||||
def get_portfolio(self, portfolio_id=None):
|
||||
if self.task_order:
|
||||
return self.task_order.portfolio
|
||||
return Portfolios.get(self.user, portfolio_id)
|
||||
|
||||
|
||||
class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow):
|
||||
def __init__(
|
||||
@ -221,6 +238,9 @@ def new(screen, task_order_id=None, portfolio_id=None):
|
||||
"complete": workflow.is_complete,
|
||||
}
|
||||
|
||||
if not workflow.can_edit_pf_attributes(portfolio_id):
|
||||
template_args["portfolio"] = workflow.get_portfolio(portfolio_id=portfolio_id)
|
||||
|
||||
if task_order_id and screen is 4:
|
||||
task_order = TaskOrders.get(g.current_user, task_order_id)
|
||||
if not TaskOrders.all_sections_complete(task_order):
|
||||
|
@ -42,6 +42,54 @@ def serialize_dates(data):
|
||||
return data
|
||||
|
||||
|
||||
def test_new_to_can_edit_pf_attributes_screen_1():
|
||||
portfolio = PortfolioFactory.create()
|
||||
workflow = ShowTaskOrderWorkflow(user=portfolio.owner)
|
||||
assert workflow.can_edit_pf_attributes(portfolio.id)
|
||||
|
||||
|
||||
def test_new_to_can_edit_pf_attributes_on_return_to_screen_1():
|
||||
portfolio = PortfolioFactory.create()
|
||||
workflow = ShowTaskOrderWorkflow(user=portfolio.owner)
|
||||
assert workflow.can_edit_pf_attributes()
|
||||
|
||||
|
||||
def test_to_on_pf_cannot_edit_pf_attributes():
|
||||
portfolio = PortfolioFactory.create()
|
||||
pf_task_order = TaskOrderFactory(portfolio=portfolio)
|
||||
|
||||
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(
|
||||
user=second_task_order.creator, task_order_id=second_task_order.id
|
||||
)
|
||||
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)
|
||||
assert portfolio.num_task_orders > 0
|
||||
|
||||
workflow = ShowTaskOrderWorkflow(
|
||||
user=task_order.creator, task_order_id=task_order.id
|
||||
)
|
||||
assert portfolio == workflow.get_portfolio()
|
||||
|
||||
|
||||
def test_get_portfolio_with_portfolio_id():
|
||||
user = UserFactory.create()
|
||||
portfolio = PortfolioFactory.create(owner=user)
|
||||
workflow = ShowTaskOrderWorkflow(user=portfolio.owner)
|
||||
assert portfolio == workflow.get_portfolio(portfolio_id=portfolio.id)
|
||||
|
||||
|
||||
# TODO: this test will need to be more complicated when we add validation to
|
||||
# the forms
|
||||
def test_create_new_task_order(client, user_session, pdf_upload):
|
||||
|
Loading…
x
Reference in New Issue
Block a user