change current task order table name
rename existing task order factory fix legacy task order repr
This commit is contained in:
parent
d0dba9e4a6
commit
2f515d7b47
24
alembic/versions/3dc8b7961bd1_rename_task_orders.py
Normal file
24
alembic/versions/3dc8b7961bd1_rename_task_orders.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"""rename task orders
|
||||||
|
|
||||||
|
Revision ID: 3dc8b7961bd1
|
||||||
|
Revises: 02d11579a581
|
||||||
|
Create Date: 2018-12-12 13:17:25.728679
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '3dc8b7961bd1'
|
||||||
|
down_revision = '02d11579a581'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.rename_table("task_orders", "legacy_task_orders")
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.rename_table("legacy_task_orders", "task_orders")
|
@ -2,19 +2,21 @@ from sqlalchemy.orm.exc import NoResultFound
|
|||||||
from flask import current_app as app
|
from flask import current_app as app
|
||||||
|
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.models.task_order import TaskOrder, Source, FundingType
|
from atst.models.legacy_task_order import LegacyTaskOrder, Source, FundingType
|
||||||
from .exceptions import NotFoundError
|
from .exceptions import NotFoundError
|
||||||
from atst.utils import update_obj
|
from atst.utils import update_obj
|
||||||
|
|
||||||
|
|
||||||
class TaskOrders(object):
|
class TaskOrders(object):
|
||||||
TASK_ORDER_DATA = [col.name for col in TaskOrder.__table__.c if col.name != "id"]
|
TASK_ORDER_DATA = [
|
||||||
|
col.name for col in LegacyTaskOrder.__table__.c if col.name != "id"
|
||||||
|
]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get(cls, order_number):
|
def get(cls, order_number):
|
||||||
try:
|
try:
|
||||||
task_order = (
|
task_order = (
|
||||||
db.session.query(TaskOrder).filter_by(number=order_number).one()
|
db.session.query(LegacyTaskOrder).filter_by(number=order_number).one()
|
||||||
)
|
)
|
||||||
except NoResultFound:
|
except NoResultFound:
|
||||||
if TaskOrders._client():
|
if TaskOrders._client():
|
||||||
@ -39,7 +41,7 @@ class TaskOrders(object):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, source=Source.MANUAL, **kwargs):
|
def create(cls, source=Source.MANUAL, **kwargs):
|
||||||
to_data = {k: v for k, v in kwargs.items() if v not in ["", None]}
|
to_data = {k: v for k, v in kwargs.items() if v not in ["", None]}
|
||||||
task_order = TaskOrder(source=source, **to_data)
|
task_order = LegacyTaskOrder(source=source, **to_data)
|
||||||
|
|
||||||
db.session.add(task_order)
|
db.session.add(task_order)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
@ -9,7 +9,7 @@ from .role import Role
|
|||||||
from .user import User
|
from .user import User
|
||||||
from .workspace_role import WorkspaceRole
|
from .workspace_role import WorkspaceRole
|
||||||
from .pe_number import PENumber
|
from .pe_number import PENumber
|
||||||
from .task_order import TaskOrder
|
from .legacy_task_order import LegacyTaskOrder
|
||||||
from .workspace import Workspace
|
from .workspace import Workspace
|
||||||
from .project import Project
|
from .project import Project
|
||||||
from .environment import Environment
|
from .environment import Environment
|
||||||
|
@ -18,8 +18,8 @@ class FundingType(Enum):
|
|||||||
OTHER = "OTHER"
|
OTHER = "OTHER"
|
||||||
|
|
||||||
|
|
||||||
class TaskOrder(Base, mixins.TimestampsMixin):
|
class LegacyTaskOrder(Base, mixins.TimestampsMixin):
|
||||||
__tablename__ = "task_orders"
|
__tablename__ = "legacy_task_orders"
|
||||||
|
|
||||||
id = types.Id()
|
id = types.Id()
|
||||||
number = Column(String, unique=True)
|
number = Column(String, unique=True)
|
||||||
@ -65,7 +65,7 @@ class TaskOrder(Base, mixins.TimestampsMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<TaskOrder(number='{}', verified='{}', budget='{}', expiration_date='{}', pdf='{}', id='{}')>".format(
|
return "<LegacyTaskOrder(number='{}', verified='{}', budget='{}', expiration_date='{}', pdf='{}', id='{}')>".format(
|
||||||
self.number,
|
self.number,
|
||||||
self.verified,
|
self.verified,
|
||||||
self.budget,
|
self.budget,
|
@ -6,7 +6,7 @@ from atst.models import Base, types, mixins
|
|||||||
from atst.models.request_status_event import RequestStatus
|
from atst.models.request_status_event import RequestStatus
|
||||||
from atst.utils import first_or_none
|
from atst.utils import first_or_none
|
||||||
from atst.models.request_revision import RequestRevision
|
from atst.models.request_revision import RequestRevision
|
||||||
from atst.models.task_order import Source as TaskOrderSource
|
from atst.models.legacy_task_order import Source as TaskOrderSource
|
||||||
|
|
||||||
|
|
||||||
def map_properties_to_dict(properties, instance):
|
def map_properties_to_dict(properties, instance):
|
||||||
@ -39,8 +39,8 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
|
|||||||
user_id = Column(ForeignKey("users.id"), nullable=False)
|
user_id = Column(ForeignKey("users.id"), nullable=False)
|
||||||
creator = relationship("User", backref="owned_requests")
|
creator = relationship("User", backref="owned_requests")
|
||||||
|
|
||||||
task_order_id = Column(ForeignKey("task_orders.id"))
|
task_order_id = Column(ForeignKey("legacy_task_orders.id"))
|
||||||
task_order = relationship("TaskOrder")
|
task_order = relationship("LegacyTaskOrder")
|
||||||
|
|
||||||
revisions = relationship(
|
revisions = relationship(
|
||||||
"RequestRevision", back_populates="request", order_by="RequestRevision.sequence"
|
"RequestRevision", back_populates="request", order_by="RequestRevision.sequence"
|
||||||
|
@ -31,7 +31,7 @@ from atst.domain.reports import MONTHLY_SPEND_AARDVARK, MONTHLY_SPEND_BELUGA
|
|||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
from atst.domain.users import Users
|
from atst.domain.users import Users
|
||||||
from atst.domain.workspaces import Workspaces
|
from atst.domain.workspaces import Workspaces
|
||||||
from tests.factories import RequestFactory, TaskOrderFactory
|
from tests.factories import RequestFactory, LegacyTaskOrderFactory
|
||||||
|
|
||||||
|
|
||||||
dod_ids = [
|
dod_ids = [
|
||||||
@ -57,7 +57,7 @@ def create_demo_workspace(name, data):
|
|||||||
return
|
return
|
||||||
|
|
||||||
request = RequestFactory.build(creator=workspace_owner)
|
request = RequestFactory.build(creator=workspace_owner)
|
||||||
request.task_order = TaskOrderFactory.build()
|
request.task_order = LegacyTaskOrderFactory.build()
|
||||||
request = Requests.update(
|
request = Requests.update(
|
||||||
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,7 @@ from atst.domain.projects import Projects
|
|||||||
from atst.domain.workspace_roles import WorkspaceRoles
|
from atst.domain.workspace_roles import WorkspaceRoles
|
||||||
from atst.models.invitation import Status as InvitationStatus
|
from atst.models.invitation import Status as InvitationStatus
|
||||||
from atst.domain.exceptions import AlreadyExistsError
|
from atst.domain.exceptions import AlreadyExistsError
|
||||||
from tests.factories import RequestFactory, TaskOrderFactory, InvitationFactory
|
from tests.factories import RequestFactory, LegacyTaskOrderFactory, InvitationFactory
|
||||||
from atst.routes.dev import _DEV_USERS as DEV_USERS
|
from atst.routes.dev import _DEV_USERS as DEV_USERS
|
||||||
|
|
||||||
WORKSPACE_USERS = [
|
WORKSPACE_USERS = [
|
||||||
@ -102,7 +102,7 @@ def seed_db():
|
|||||||
requests.append(request)
|
requests.append(request)
|
||||||
|
|
||||||
request = requests[0]
|
request = requests[0]
|
||||||
request.task_order = TaskOrderFactory.build()
|
request.task_order = LegacyTaskOrderFactory.build()
|
||||||
request = Requests.update(
|
request = Requests.update(
|
||||||
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
||||||
)
|
)
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
from atst.domain.reports import Reports
|
from atst.domain.reports import Reports
|
||||||
|
|
||||||
from tests.factories import RequestFactory, TaskOrderFactory, WorkspaceFactory
|
from tests.factories import RequestFactory, LegacyTaskOrderFactory, WorkspaceFactory
|
||||||
|
|
||||||
CLIN_NUMS = ["0001", "0003", "1001", "1003", "2001", "2003"]
|
CLIN_NUMS = ["0001", "0003", "1001", "1003", "2001", "2003"]
|
||||||
|
|
||||||
|
|
||||||
def test_workspace_totals():
|
def test_workspace_totals():
|
||||||
task_order = TaskOrderFactory.create()
|
task_order = LegacyTaskOrderFactory.create()
|
||||||
|
|
||||||
for num in CLIN_NUMS:
|
for num in CLIN_NUMS:
|
||||||
setattr(task_order, "clin_{}".format(num), 200)
|
setattr(task_order, "clin_{}".format(num), 200)
|
||||||
|
@ -4,11 +4,11 @@ from atst.domain.exceptions import NotFoundError
|
|||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
from atst.eda_client import MockEDAClient
|
from atst.eda_client import MockEDAClient
|
||||||
|
|
||||||
from tests.factories import TaskOrderFactory
|
from tests.factories import LegacyTaskOrderFactory
|
||||||
|
|
||||||
|
|
||||||
def test_can_get_task_order():
|
def test_can_get_task_order():
|
||||||
new_to = TaskOrderFactory.create(number="0101969F")
|
new_to = LegacyTaskOrderFactory.create(number="0101969F")
|
||||||
to = TaskOrders.get(new_to.number)
|
to = TaskOrders.get(new_to.number)
|
||||||
|
|
||||||
assert to.id == to.id
|
assert to.id == to.id
|
||||||
|
@ -13,7 +13,7 @@ from atst.models.request_review import RequestReview
|
|||||||
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
|
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
|
||||||
from atst.models.pe_number import PENumber
|
from atst.models.pe_number import PENumber
|
||||||
from atst.models.project import Project
|
from atst.models.project import Project
|
||||||
from atst.models.task_order import TaskOrder, Source, FundingType
|
from atst.models.legacy_task_order import LegacyTaskOrder, Source, FundingType
|
||||||
from atst.models.user import User
|
from atst.models.user import User
|
||||||
from atst.models.role import Role
|
from atst.models.role import Role
|
||||||
from atst.models.workspace import Workspace
|
from atst.models.workspace import Workspace
|
||||||
@ -123,7 +123,7 @@ class RequestFactory(Base):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def _adjust_kwargs(cls, **kwargs):
|
def _adjust_kwargs(cls, **kwargs):
|
||||||
if kwargs.pop("with_task_order", False) and "task_order" not in kwargs:
|
if kwargs.pop("with_task_order", False) and "task_order" not in kwargs:
|
||||||
kwargs["task_order"] = TaskOrderFactory.build()
|
kwargs["task_order"] = LegacyTaskOrderFactory.build()
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -212,9 +212,9 @@ class PENumberFactory(Base):
|
|||||||
model = PENumber
|
model = PENumber
|
||||||
|
|
||||||
|
|
||||||
class TaskOrderFactory(Base):
|
class LegacyTaskOrderFactory(Base):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TaskOrder
|
model = LegacyTaskOrder
|
||||||
|
|
||||||
source = Source.MANUAL
|
source = Source.MANUAL
|
||||||
funding_type = FundingType.PROC
|
funding_type = FundingType.PROC
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
from tests.factories import TaskOrderFactory
|
from tests.factories import LegacyTaskOrderFactory
|
||||||
from tests.assert_util import dict_contains
|
from tests.assert_util import dict_contains
|
||||||
|
|
||||||
|
|
||||||
def test_as_dictionary():
|
def test_as_dictionary():
|
||||||
data = TaskOrderFactory.dictionary()
|
data = LegacyTaskOrderFactory.dictionary()
|
||||||
real_task_order = TaskOrderFactory.create(**data)
|
real_task_order = LegacyTaskOrderFactory.create(**data)
|
||||||
assert dict_contains(real_task_order.to_dictionary(), data)
|
assert dict_contains(real_task_order.to_dictionary(), data)
|
||||||
|
|
||||||
|
|
||||||
def test_budget():
|
def test_budget():
|
||||||
task_order = TaskOrderFactory.create(
|
task_order = LegacyTaskOrderFactory.create(
|
||||||
clin_0001=500,
|
clin_0001=500,
|
||||||
clin_0003=200,
|
clin_0003=200,
|
||||||
clin_1001=None,
|
clin_1001=None,
|
||||||
|
@ -3,14 +3,14 @@ from flask import url_for
|
|||||||
|
|
||||||
from atst.models.request_status_event import RequestStatus
|
from atst.models.request_status_event import RequestStatus
|
||||||
|
|
||||||
from tests.factories import RequestFactory, TaskOrderFactory, UserFactory
|
from tests.factories import RequestFactory, LegacyTaskOrderFactory, UserFactory
|
||||||
|
|
||||||
|
|
||||||
def test_can_show_financial_data(client, user_session):
|
def test_can_show_financial_data(client, user_session):
|
||||||
user = UserFactory.create()
|
user = UserFactory.create()
|
||||||
user_session(user)
|
user_session(user)
|
||||||
|
|
||||||
task_order = TaskOrderFactory.create()
|
task_order = LegacyTaskOrderFactory.create()
|
||||||
request = RequestFactory.create_with_status(
|
request = RequestFactory.create_with_status(
|
||||||
status=RequestStatus.PENDING_CCPO_APPROVAL, task_order=task_order, creator=user
|
status=RequestStatus.PENDING_CCPO_APPROVAL, task_order=task_order, creator=user
|
||||||
)
|
)
|
||||||
|
@ -7,7 +7,7 @@ from atst.domain.roles import Roles
|
|||||||
|
|
||||||
from tests.factories import (
|
from tests.factories import (
|
||||||
RequestFactory,
|
RequestFactory,
|
||||||
TaskOrderFactory,
|
LegacyTaskOrderFactory,
|
||||||
UserFactory,
|
UserFactory,
|
||||||
RequestReviewFactory,
|
RequestReviewFactory,
|
||||||
RequestStatusEventFactory,
|
RequestStatusEventFactory,
|
||||||
@ -46,7 +46,7 @@ def test_non_ccpo_cannot_view_approval(user_session, client):
|
|||||||
|
|
||||||
|
|
||||||
def prepare_request_pending_approval(creator, pdf_attachment=None):
|
def prepare_request_pending_approval(creator, pdf_attachment=None):
|
||||||
task_order = TaskOrderFactory.create(number="abc123", pdf=pdf_attachment)
|
task_order = LegacyTaskOrderFactory.create(number="abc123", pdf=pdf_attachment)
|
||||||
return RequestFactory.create_with_status(
|
return RequestFactory.create_with_status(
|
||||||
status=RequestStatus.PENDING_CCPO_APPROVAL,
|
status=RequestStatus.PENDING_CCPO_APPROVAL,
|
||||||
task_order=task_order,
|
task_order=task_order,
|
||||||
@ -86,7 +86,7 @@ def test_task_order_download(app, client, user_session, pdf_upload):
|
|||||||
user_session(user)
|
user_session(user)
|
||||||
|
|
||||||
attachment = Attachment.attach(pdf_upload)
|
attachment = Attachment.attach(pdf_upload)
|
||||||
task_order = TaskOrderFactory.create(number="abc123", pdf=attachment)
|
task_order = LegacyTaskOrderFactory.create(number="abc123", pdf=attachment)
|
||||||
request = RequestFactory.create(task_order=task_order, creator=user)
|
request = RequestFactory.create(task_order=task_order, creator=user)
|
||||||
|
|
||||||
# ensure that real data for pdf upload has been flushed to disk
|
# ensure that real data for pdf upload has been flushed to disk
|
||||||
|
@ -11,7 +11,7 @@ from atst.routes.requests.financial_verification import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from tests.mocks import MOCK_VALID_PE_ID
|
from tests.mocks import MOCK_VALID_PE_ID
|
||||||
from tests.factories import RequestFactory, UserFactory, TaskOrderFactory
|
from tests.factories import RequestFactory, UserFactory, LegacyTaskOrderFactory
|
||||||
from atst.forms.exceptions import FormValidationError
|
from atst.forms.exceptions import FormValidationError
|
||||||
from atst.domain.requests.financial_verification import (
|
from atst.domain.requests.financial_verification import (
|
||||||
PENumberValidator,
|
PENumberValidator,
|
||||||
@ -525,7 +525,7 @@ def test_always_derives_pdf_filename(fv_data, e_fv_data, pdf_upload):
|
|||||||
attachment = Attachment.attach(
|
attachment = Attachment.attach(
|
||||||
pdf_upload, resource="task_order", resource_id=request_one.id
|
pdf_upload, resource="task_order", resource_id=request_one.id
|
||||||
)
|
)
|
||||||
task_order = TaskOrderFactory.create(pdf=attachment)
|
task_order = LegacyTaskOrderFactory.create(pdf=attachment)
|
||||||
request_two = RequestFactory.create(creator=user, task_order=task_order)
|
request_two = RequestFactory.create(creator=user, task_order=task_order)
|
||||||
|
|
||||||
form_one = GetFinancialVerificationForm(
|
form_one = GetFinancialVerificationForm(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user