Make portfolio_id an init kwarg on ShowTaskOrderWorkflow class

This commit is contained in:
Montana 2019-03-08 09:31:30 -05:00
parent acf70d1144
commit 970eb8aba3
2 changed files with 19 additions and 16 deletions

View File

@ -46,10 +46,11 @@ TASK_ORDER_SECTIONS = [
class ShowTaskOrderWorkflow: class ShowTaskOrderWorkflow:
def __init__(self, user, screen=1, task_order_id=None): def __init__(self, user, screen=1, task_order_id=None, portfolio_id=None):
self.user = user self.user = user
self.screen = screen self.screen = screen
self.task_order_id = task_order_id self.task_order_id = task_order_id
self.portfolio_id = portfolio_id
self._section = TASK_ORDER_SECTIONS[screen - 1] self._section = TASK_ORDER_SECTIONS[screen - 1]
self._task_order = None self._task_order = None
self._form = None self._form = None
@ -120,19 +121,19 @@ class ShowTaskOrderWorkflow:
else: else:
return False return False
def pf_attributes_read_only(self, portfolio_id=None): def pf_attributes_read_only(self):
if self.task_order: if self.task_order:
if self.task_order.portfolio.num_task_orders > 1: if self.task_order.portfolio.num_task_orders > 1:
return True return True
elif portfolio_id: elif self.portfolio_id:
if self.get_portfolio(portfolio_id).num_task_orders > 0: if self.get_portfolio().num_task_orders > 0:
return True return True
return False return False
def get_portfolio(self, portfolio_id=None): def get_portfolio(self):
if self.task_order: if self.task_order:
return self.task_order.portfolio return self.task_order.portfolio
return Portfolios.get(self.user, portfolio_id) return Portfolios.get(self.user, self.portfolio_id)
class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow): class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow):
@ -155,7 +156,7 @@ class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow):
@property @property
def form(self): def form(self):
if self.pf_attributes_read_only(self.portfolio_id) and self.screen == 1: if self.pf_attributes_read_only() and self.screen == 1:
return task_order_form.AppInfoWithExistingPortfolioForm(self.form_data) return task_order_form.AppInfoWithExistingPortfolioForm(self.form_data)
return self._form return self._form
@ -226,7 +227,9 @@ def get_started():
@task_orders_bp.route("/task_orders/new/<int:screen>/<task_order_id>") @task_orders_bp.route("/task_orders/new/<int:screen>/<task_order_id>")
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new/<int:screen>") @task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new/<int:screen>")
def new(screen, task_order_id=None, portfolio_id=None): def new(screen, task_order_id=None, portfolio_id=None):
workflow = ShowTaskOrderWorkflow(g.current_user, screen, task_order_id) workflow = ShowTaskOrderWorkflow(
g.current_user, screen, task_order_id, portfolio_id
)
template_args = { template_args = {
"current": screen, "current": screen,
"task_order_id": task_order_id, "task_order_id": task_order_id,
@ -235,8 +238,8 @@ def new(screen, task_order_id=None, portfolio_id=None):
"complete": workflow.is_complete, "complete": workflow.is_complete,
} }
if workflow.pf_attributes_read_only(portfolio_id): if workflow.pf_attributes_read_only():
template_args["portfolio"] = workflow.get_portfolio(portfolio_id=portfolio_id) template_args["portfolio"] = workflow.get_portfolio()
if screen == 1: if screen == 1:
workflow.form = task_order_form.AppInfoWithExistingPortfolioForm( workflow.form = task_order_form.AppInfoWithExistingPortfolioForm(
obj=workflow.task_order obj=workflow.task_order

View File

@ -44,8 +44,8 @@ def serialize_dates(data):
def test_new_to_can_edit_pf_attributes_screen_1(): def test_new_to_can_edit_pf_attributes_screen_1():
portfolio = PortfolioFactory.create() portfolio = PortfolioFactory.create()
workflow = ShowTaskOrderWorkflow(user=portfolio.owner) workflow = ShowTaskOrderWorkflow(user=portfolio.owner, portfolio_id=portfolio.id)
assert not workflow.pf_attributes_read_only(portfolio.id) assert not workflow.pf_attributes_read_only()
def test_new_pf_can_edit_pf_attributes_on_back_navigation(): def test_new_pf_can_edit_pf_attributes_on_back_navigation():
@ -61,9 +61,9 @@ def test_to_on_pf_cannot_edit_pf_attributes():
portfolio = PortfolioFactory.create() portfolio = PortfolioFactory.create()
pf_task_order = TaskOrderFactory(portfolio=portfolio) pf_task_order = TaskOrderFactory(portfolio=portfolio)
workflow = ShowTaskOrderWorkflow(user=portfolio.owner) workflow = ShowTaskOrderWorkflow(user=portfolio.owner, portfolio_id=portfolio.id)
assert portfolio.num_task_orders == 1 assert portfolio.num_task_orders == 1
assert workflow.pf_attributes_read_only(portfolio.id) assert workflow.pf_attributes_read_only()
second_task_order = TaskOrderFactory(portfolio=portfolio) second_task_order = TaskOrderFactory(portfolio=portfolio)
second_workflow = ShowTaskOrderWorkflow( second_workflow = ShowTaskOrderWorkflow(
@ -87,8 +87,8 @@ def test_get_portfolio_when_task_order_exists():
def test_get_portfolio_with_portfolio_id(): def test_get_portfolio_with_portfolio_id():
user = UserFactory.create() user = UserFactory.create()
portfolio = PortfolioFactory.create(owner=user) portfolio = PortfolioFactory.create(owner=user)
workflow = ShowTaskOrderWorkflow(user=portfolio.owner) workflow = ShowTaskOrderWorkflow(user=portfolio.owner, portfolio_id=portfolio.id)
assert portfolio == workflow.get_portfolio(portfolio_id=portfolio.id) assert portfolio == workflow.get_portfolio()
# TODO: this test will need to be more complicated when we add validation to # TODO: this test will need to be more complicated when we add validation to