Implement Request.last_submission_date
This commit is contained in:
@@ -87,6 +87,8 @@ class Requests(object):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def submit(cls, request):
|
def submit(cls, request):
|
||||||
|
request = Requests.set_status(request, RequestStatus.SUBMITTED)
|
||||||
|
|
||||||
new_status = None
|
new_status = None
|
||||||
if Requests.should_auto_approve(request):
|
if Requests.should_auto_approve(request):
|
||||||
new_status = RequestStatus.PENDING_FINANCIAL_VERIFICATION
|
new_status = RequestStatus.PENDING_FINANCIAL_VERIFICATION
|
||||||
|
@@ -5,6 +5,10 @@ from sqlalchemy.orm import relationship
|
|||||||
|
|
||||||
from atst.models import Base
|
from atst.models import Base
|
||||||
from atst.models.types import Id
|
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):
|
class Request(Base):
|
||||||
@@ -47,3 +51,12 @@ class Request(Base):
|
|||||||
if self.task_order:
|
if self.task_order:
|
||||||
return self.task_order.verified
|
return self.task_order.verified
|
||||||
return False
|
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
|
||||||
|
@@ -10,6 +10,7 @@ from atst.models.types import Id
|
|||||||
|
|
||||||
class RequestStatus(Enum):
|
class RequestStatus(Enum):
|
||||||
STARTED = "Started"
|
STARTED = "Started"
|
||||||
|
SUBMITTED = "Submitted"
|
||||||
PENDING_FINANCIAL_VERIFICATION = "Pending Financial Verification"
|
PENDING_FINANCIAL_VERIFICATION = "Pending Financial Verification"
|
||||||
PENDING_CCPO_APPROVAL = "Pending CCPO Approval"
|
PENDING_CCPO_APPROVAL = "Pending CCPO Approval"
|
||||||
CHANGES_REQUESTED = "Changes Requested"
|
CHANGES_REQUESTED = "Changes Requested"
|
||||||
|
@@ -70,6 +70,15 @@ def test_should_allow_submission(new_request):
|
|||||||
assert not Requests.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):
|
def test_exists(session):
|
||||||
user_allowed = UserFactory.create()
|
user_allowed = UserFactory.create()
|
||||||
user_denied = UserFactory.create()
|
user_denied = UserFactory.create()
|
||||||
|
Reference in New Issue
Block a user