diff --git a/atst/models/task_order.py b/atst/models/task_order.py index 340be9af..04260b7b 100644 --- a/atst/models/task_order.py +++ b/atst/models/task_order.py @@ -88,12 +88,21 @@ class TaskOrder(Base, mixins.TimestampsMixin): else: return Status.PENDING + @property + def display_status(self): + return self.status.value + @property def budget(self): return sum( filter(None, [self.clin_01, self.clin_02, self.clin_03, self.clin_04]) ) + @property + def balance(self): + # TODO: somehow calculate the remaining balance. For now, assume $0 spent + return self.budget + @property def portfolio_name(self): return self.portfolio.name diff --git a/atst/routes/portfolios/task_orders.py b/atst/routes/portfolios/task_orders.py index afadd3ae..8c326775 100644 --- a/atst/routes/portfolios/task_orders.py +++ b/atst/routes/portfolios/task_orders.py @@ -1,6 +1,6 @@ from collections import defaultdict -from flask import g, render_template +from flask import g, render_template, url_for from . import portfolios_bp from atst.domain.task_orders import TaskOrders @@ -12,13 +12,34 @@ from atst.models.task_order import Status as TaskOrderStatus def portfolio_task_orders(portfolio_id): portfolio = Portfolios.get(g.current_user, portfolio_id) task_orders_by_status = defaultdict(list) + serialize_task_order = lambda task_order: { + key: getattr(task_order, key) + for key in [ + "id", + "budget", + "time_created", + "start_date", + "end_date", + "display_status", + "balance", + ] + } + for task_order in portfolio.task_orders: - task_orders_by_status[task_order.status].append(task_order) + serialized_task_order = serialize_task_order(task_order) + serialized_task_order["url"] = url_for( + "portfolios.view_task_order", + portfolio_id=portfolio.id, + task_order_id=task_order.id, + ) + task_orders_by_status[task_order.status].append(serialized_task_order) return render_template( "portfolios/task_orders/index.html", portfolio=portfolio, pending_task_orders=task_orders_by_status.get(TaskOrderStatus.PENDING, []), + active_task_orders=task_orders_by_status.get(TaskOrderStatus.ACTIVE, []), + expired_task_orders=task_orders_by_status.get(TaskOrderStatus.EXPIRED, []), )