diff --git a/alembic/versions/24700d113ea9_add_clin_table.py b/alembic/versions/24700d113ea9_add_clin_table.py new file mode 100644 index 00000000..452d634f --- /dev/null +++ b/alembic/versions/24700d113ea9_add_clin_table.py @@ -0,0 +1,40 @@ +"""add clin table + +Revision ID: 24700d113ea9 +Revises: d73cba9a4259 +Create Date: 2019-05-31 10:28:20.983200 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '24700d113ea9' +down_revision = 'd73cba9a4259' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('clins', + sa.Column('time_created', sa.TIMESTAMP(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('time_updated', sa.TIMESTAMP(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False), + sa.Column('task_order_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('number', sa.String(), nullable=False), + sa.Column('loas', postgresql.ARRAY(sa.String()), server_default='{}', nullable=False), + sa.Column('start_date', sa.Date(), nullable=False), + sa.Column('end_date', sa.Date(), nullable=False), + sa.Column('obligated_amount', sa.Numeric(scale=2), nullable=False), + sa.ForeignKeyConstraint(['task_order_id'], ['task_orders.id'], ), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('clins') + # ### end Alembic commands ### diff --git a/atst/models/__init__.py b/atst/models/__init__.py index 5c2cca36..1dd5d48f 100644 --- a/atst/models/__init__.py +++ b/atst/models/__init__.py @@ -2,20 +2,22 @@ from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() -from .permissions import Permissions -from .permission_set import PermissionSet -from .user import User -from .portfolio_role import PortfolioRole, Status as PortfolioRoleStatus -from .application_role import ApplicationRole, Status as ApplicationRoleStatus -from .environment_role import EnvironmentRole, CSPRole -from .portfolio import Portfolio + from .application import Application -from .environment import Environment +from .application_invitation import ApplicationInvitation +from .application_role import ApplicationRole, Status as ApplicationRoleStatus from .attachment import Attachment from .audit_event import AuditEvent -from .portfolio_invitation import PortfolioInvitation -from .application_invitation import ApplicationInvitation -from .task_order import TaskOrder +from .clin import CLIN +from .environment import Environment +from .environment_role import EnvironmentRole, CSPRole from .notification_recipient import NotificationRecipient +from .permissions import Permissions +from .permission_set import PermissionSet +from .portfolio import Portfolio +from .portfolio_invitation import PortfolioInvitation +from .portfolio_role import PortfolioRole, Status as PortfolioRoleStatus +from .task_order import TaskOrder +from .user import User from .mixins.invites import Status as InvitationStatus diff --git a/atst/models/clin.py b/atst/models/clin.py new file mode 100644 index 00000000..0570ca02 --- /dev/null +++ b/atst/models/clin.py @@ -0,0 +1,29 @@ +from enum import Enum +from sqlalchemy import Column, Date, Enum as SQLAEnum, ForeignKey, Numeric, String +from sqlalchemy.dialects.postgresql import ARRAY +from sqlalchemy.orm import relationship + +from atst.models import Base, mixins, types + + +class JEDICLINType(Enum): + JEDI_CLIN_1 = "jedi clin 0001" + JEDI_CLIN_2 = "jedi clin 0002" + JEDI_CLIN_3 = "jedi clin 0003" + JEDI_CLIN_4 = "jedi clin 0004" + + +class CLIN(Base, mixins.TimestampsMixin): + __tablename__ = "clins" + + id = types.Id() + + task_order_id = Column(ForeignKey("task_orders.id"), nullable=False) + task_order = relationship("TaskOrder") + + number = Column(String, nullable=False) + loas = Column(ARRAY(String), server_default="{}", nullable=False) + start_date = Column(Date, nullable=False) + end_date = Column(Date, nullable=False) + obligated_amount = Column(Numeric(scale=2), nullable=False) + jedi_clin_type = Column(SQLAEnum(JEDICLINType, native_enum=False), nullable=False)