Implement Request.last_submission_date

This commit is contained in:
richard-dds 2018-09-04 12:47:17 -04:00
parent 9fe139d5a7
commit 6af50b78b0
4 changed files with 25 additions and 0 deletions

View File

@ -87,6 +87,8 @@ class Requests(object):
@classmethod
def submit(cls, request):
request = Requests.set_status(request, RequestStatus.SUBMITTED)
new_status = None
if Requests.should_auto_approve(request):
new_status = RequestStatus.PENDING_FINANCIAL_VERIFICATION

View File

@ -5,6 +5,10 @@ from sqlalchemy.orm import relationship
from atst.models import Base
from atst.models.types import Id
from atst.models.request_status_event import RequestStatus
def first_or_none(predicate, lst):
return next((x for x in lst if predicate(x)), None,)
class Request(Base):
@ -47,3 +51,12 @@ class Request(Base):
if self.task_order:
return self.task_order.verified
return False
@property
def last_submission_date(self):
def _is_submission(status_event):
return status_event.new_status == RequestStatus.SUBMITTED
last_submission = first_or_none(_is_submission, reversed(self.status_events))
if last_submission:
return last_submission.time_created

View File

@ -10,6 +10,7 @@ from atst.models.types import Id
class RequestStatus(Enum):
STARTED = "Started"
SUBMITTED = "Submitted"
PENDING_FINANCIAL_VERIFICATION = "Pending Financial Verification"
PENDING_CCPO_APPROVAL = "Pending CCPO Approval"
CHANGES_REQUESTED = "Changes Requested"

View File

@ -70,6 +70,15 @@ def test_should_allow_submission(new_request):
assert not Requests.should_allow_submission(new_request)
def test_request_knows_its_last_submission_date(new_request):
submitted_request = Requests.submit(new_request)
assert submitted_request.last_submission_date
def test_request_knows_if_it_has_no_last_submission_date(new_request):
assert new_request.last_submission_date is None
def test_exists(session):
user_allowed = UserFactory.create()
user_denied = UserFactory.create()