change current task order table name

rename existing task order factory

fix legacy task order repr
This commit is contained in:
dandds 2018-12-12 13:34:40 -05:00
parent d0dba9e4a6
commit 2f515d7b47
14 changed files with 60 additions and 34 deletions

View 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")

View File

@ -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()

View File

@ -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

View File

@ -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,

View File

@ -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"

View File

@ -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()}
) )

View File

@ -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()}
) )

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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
) )

View File

@ -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

View File

@ -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(