Merge pull request #987 from dod-ccpo/check-clin-complete

Check to make sure clins complete
This commit is contained in:
leigh-mil 2019-07-30 10:14:11 -04:00 committed by GitHub
commit 2dbff2ff7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 1 deletions

View File

@ -37,6 +37,19 @@ class CLIN(Base, mixins.TimestampsMixin):
JEDICLINType.JEDI_CLIN_3, JEDICLINType.JEDI_CLIN_3,
] ]
@property
def is_completed(self):
return all(
[
self.number,
self.start_date,
self.end_date,
self.obligated_amount,
self.jedi_clin_type,
len(self.loas),
]
)
def to_dictionary(self): def to_dictionary(self):
return { return {
c.name: getattr(self, c.name) c.name: getattr(self, c.name)

View File

@ -92,9 +92,13 @@ class TaskOrder(Base, mixins.TimestampsMixin):
def has_ended(self): def has_ended(self):
return self.start_date is not None and Clock.today() >= self.end_date return self.start_date is not None and Clock.today() >= self.end_date
@property
def clins_are_completed(self):
return all([len(self.clins), (clin.is_completed for clin in self.clins)])
@property @property
def is_completed(self): def is_completed(self):
return all([self.pdf, self.number, len(self.clins)]) return all([self.pdf, self.number, self.clins_are_completed])
@property @property
def is_signed(self): def is_signed(self):

View File

@ -297,6 +297,7 @@ class CLINFactory(Base):
jedi_clin_type = factory.LazyFunction( jedi_clin_type = factory.LazyFunction(
lambda *args: random.choice(list(clin.JEDICLINType)) lambda *args: random.choice(list(clin.JEDICLINType))
) )
loas = factory.LazyFunction(random_loa_numbers)
class NotificationRecipientFactory(Base): class NotificationRecipientFactory(Base):

View File

@ -16,3 +16,8 @@ def test_is_obligated():
clin_4 = CLINFactory.create(jedi_clin_type=JEDICLINType.JEDI_CLIN_4) clin_4 = CLINFactory.create(jedi_clin_type=JEDICLINType.JEDI_CLIN_4)
assert not clin_4.is_obligated() assert not clin_4.is_obligated()
def test_is_completed():
assert CLINFactory.create().is_completed
assert not CLINFactory.create(loas=[]).is_completed

View File

@ -46,6 +46,12 @@ def test_task_order_completed():
assert not TaskOrderFactory.create(number=None).is_completed assert not TaskOrderFactory.create(number=None).is_completed
def test_task_order_clins_are_completed():
assert TaskOrderFactory.create(clins=[CLINFactory.create()]).clins_are_completed
assert not TaskOrderFactory.create().clins_are_completed
assert not TaskOrderFactory.create(clins=[]).clins_are_completed
class TestTaskOrderStatus: class TestTaskOrderStatus:
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock) @patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock) @patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)