Add query for finding Task Orders that have not been sent to MS or that have been updated.
This commit is contained in:
parent
03d6e7c21a
commit
6ec9fb34f9
@ -1,4 +1,5 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
from sqlalchemy import or_
|
||||||
|
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.models.clin import CLIN
|
from atst.models.clin import CLIN
|
||||||
@ -76,3 +77,17 @@ class TaskOrders(BaseDomainClass):
|
|||||||
task_order = TaskOrders.get(task_order_id)
|
task_order = TaskOrders.get(task_order_id)
|
||||||
db.session.delete(task_order)
|
db.session.delete(task_order)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_for_send_task_order_files(cls):
|
||||||
|
return (
|
||||||
|
db.session.query(TaskOrder)
|
||||||
|
.join(CLIN)
|
||||||
|
.filter(
|
||||||
|
or_(
|
||||||
|
TaskOrder.pdf_last_sent_at < CLIN.last_sent_at,
|
||||||
|
TaskOrder.pdf_last_sent_at.is_(None),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.all()
|
||||||
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from datetime import date, timedelta
|
from datetime import date, datetime, timedelta
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
from atst.domain.exceptions import AlreadyExistsError
|
from atst.domain.exceptions import AlreadyExistsError
|
||||||
@ -178,3 +178,21 @@ def test_allows_alphanumeric_number():
|
|||||||
|
|
||||||
for number in valid_to_numbers:
|
for number in valid_to_numbers:
|
||||||
assert TaskOrders.create(portfolio.id, number, [], None)
|
assert TaskOrders.create(portfolio.id, number, [], None)
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_for_send_task_order_files():
|
||||||
|
new_to = TaskOrderFactory.create(create_clins=[{}])
|
||||||
|
updated_to = TaskOrderFactory.create(
|
||||||
|
create_clins=[{"last_sent_at": datetime(2020, 2, 1)}],
|
||||||
|
pdf_last_sent_at=datetime(2020, 1, 1),
|
||||||
|
)
|
||||||
|
sent_to = TaskOrderFactory.create(
|
||||||
|
create_clins=[{"last_sent_at": datetime(2020, 1, 1)}],
|
||||||
|
pdf_last_sent_at=datetime(2020, 1, 1),
|
||||||
|
)
|
||||||
|
|
||||||
|
updated_and_new_task_orders = TaskOrders.get_for_send_task_order_files()
|
||||||
|
assert len(updated_and_new_task_orders) == 2
|
||||||
|
assert sent_to not in updated_and_new_task_orders
|
||||||
|
assert updated_to in updated_and_new_task_orders
|
||||||
|
assert new_to in updated_and_new_task_orders
|
||||||
|
@ -322,6 +322,7 @@ class TaskOrderFactory(Base):
|
|||||||
number = factory.LazyFunction(random_task_order_number)
|
number = factory.LazyFunction(random_task_order_number)
|
||||||
signed_at = None
|
signed_at = None
|
||||||
_pdf = factory.SubFactory(AttachmentFactory)
|
_pdf = factory.SubFactory(AttachmentFactory)
|
||||||
|
pdf_last_sent_at = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _create(cls, model_class, *args, **kwargs):
|
def _create(cls, model_class, *args, **kwargs):
|
||||||
@ -347,6 +348,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))
|
||||||
)
|
)
|
||||||
|
last_sent_at = None
|
||||||
|
|
||||||
|
|
||||||
class NotificationRecipientFactory(Base):
|
class NotificationRecipientFactory(Base):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user