Fake task order's expended funds, default task order start and end date to None, fix how task orders are sorted by status

This commit is contained in:
leigh-mil
2019-12-06 16:26:09 -05:00
parent 3fdde78531
commit ac8dd662d1
8 changed files with 51 additions and 27 deletions

View File

@@ -67,10 +67,10 @@ class TaskOrders(BaseDomainClass):
def sort_by_status(cls, task_orders):
by_status = {}
for status in SORT_ORDERING:
by_status[status] = []
by_status[status.value] = []
for task_order in task_orders:
by_status[task_order.status].append(task_order)
by_status[task_order.display_status].append(task_order)
return by_status

View File

@@ -1,10 +1,12 @@
from datetime import timedelta
from enum import Enum
import random
from sqlalchemy import Column, DateTime, ForeignKey, String
from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import relationship
from atst.domain.csp.reports import MockReportingProvider
from atst.models.base import Base
import atst.models.types as types
import atst.models.mixins as mixins
@@ -20,7 +22,13 @@ class Status(Enum):
UNSIGNED = "Not signed"
SORT_ORDERING = [Status.ACTIVE, Status.DRAFT, Status.UPCOMING, Status.EXPIRED, Status.UNSIGNED]
SORT_ORDERING = [
Status.ACTIVE,
Status.DRAFT,
Status.UPCOMING,
Status.EXPIRED,
Status.UNSIGNED,
]
class TaskOrder(Base, mixins.TimestampsMixin):
@@ -126,12 +134,11 @@ class TaskOrder(Base, mixins.TimestampsMixin):
@property
def start_date(self):
return min((c.start_date for c in self.clins), default=self.time_created.date())
return min((c.start_date for c in self.clins), default=None)
@property
def end_date(self):
default_end_date = self.start_date + timedelta(days=1)
return max((c.end_date for c in self.clins), default=default_end_date)
return max((c.end_date for c in self.clins), default=None)
@property
def days_to_expiration(self):
@@ -165,6 +172,12 @@ class TaskOrder(Base, mixins.TimestampsMixin):
# Faked for display purposes
return 50
@property
def invoiced_funds(self):
# TODO: implement this using reporting data from the CSP
percentage_spent = random.randrange(50, 100)
return (self.total_obligated_funds * percentage_spent) / 100
@property
def display_status(self):
return self.status.value

View File

@@ -30,6 +30,4 @@ def portfolio_funding(portfolio_id):
portfolio = Portfolios.get(g.current_user, portfolio_id)
task_orders = TaskOrders.sort_by_status(portfolio.task_orders)
# TODO: Get expended amount from the CSP
return render_template(
"task_orders/index.html", task_orders=task_orders
)
return render_template("task_orders/index.html", task_orders=task_orders)