Implement new CLIN-based TO statuses

This commit is contained in:
richard-dds
2019-06-06 15:40:41 -04:00
parent 7b8ccbf145
commit 8ecf112c48
2 changed files with 90 additions and 20 deletions

View File

@@ -1,5 +1,5 @@
from enum import Enum
from datetime import date
from datetime import date, datetime
from sqlalchemy import Column, DateTime, ForeignKey, String
from sqlalchemy.ext.hybrid import hybrid_property
@@ -15,6 +15,9 @@ class Status(Enum):
PENDING = "Pending"
ACTIVE = "Active"
EXPIRED = "Expired"
DRAFT = "Draft"
UPCOMING = "Upcoming"
UNSIGNED = "Unsigned"
class TaskOrder(Base, mixins.TimestampsMixin):
@@ -62,19 +65,36 @@ class TaskOrder(Base, mixins.TimestampsMixin):
def is_expired(self):
return self.status == Status.EXPIRED
@property
def is_completed(self):
return True
@property
def is_signed(self):
return self.signed_at is not None
@property
def status(self):
# TODO: fix task order -- implement correctly using CLINs
# Faked for display purposes
return Status.ACTIVE
today = date.today()
if not self.is_completed and not self.is_signed:
return Status.DRAFT
elif self.is_completed and not self.is_signed:
return Status.UNSIGNED
elif today < self.start_date:
return Status.UPCOMING
elif today >= self.end_date:
return Status.EXPIRED
elif self.start_date <= today < self.end_date:
return Status.ACTIVE
@property
def start_date(self):
return min(c.start_date for c in self.clins)
return min((c.start_date for c in self.clins), default=None)
@property
def end_date(self):
return max(c.end_date for c in self.clins)
return max((c.end_date for c in self.clins), default=None)
@property
def days_to_expiration(self):