Merge pull request #593 from dod-ccpo/to-funding-status-alerts

TO Statuses on Portfolio Funding Page
This commit is contained in:
leigh-mil
2019-02-05 15:44:13 -05:00
committed by GitHub
8 changed files with 264 additions and 23 deletions

View File

@@ -1,4 +1,5 @@
from enum import Enum
from datetime import date
import pendulum
from sqlalchemy import Column, Numeric, String, ForeignKey, Date, Integer
@@ -117,6 +118,11 @@ class TaskOrder(Base, mixins.TimestampsMixin):
def display_status(self):
return self.status.value
@property
def days_to_expiration(self):
if self.end_date:
return (self.end_date - date.today()).days
@property
def budget(self):
return sum(

View File

@@ -26,6 +26,7 @@ def portfolio_funding(portfolio_id):
"start_date",
"end_date",
"display_status",
"days_to_expiration",
"balance",
]
}
@@ -45,6 +46,7 @@ def portfolio_funding(portfolio_id):
if active_task_orders
else None
)
funded = len(active_task_orders) > 1
total_balance = sum([task_order["balance"] for task_order in active_task_orders])
return render_template(
@@ -54,6 +56,7 @@ def portfolio_funding(portfolio_id):
active_task_orders=active_task_orders,
expired_task_orders=task_orders_by_status.get(TaskOrderStatus.EXPIRED, []),
funding_end_date=funding_end_date,
funded=funded,
total_balance=total_balance,
)

View File

@@ -1,4 +1,5 @@
from flask.json import JSONEncoder
from datetime import date
from atst.models.attachment import Attachment
@@ -6,4 +7,6 @@ class CustomJSONEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, Attachment):
return obj.filename
if isinstance(obj, date):
return obj.strftime("%Y-%m-%d")
return JSONEncoder.default(self, obj)