Squashed migrations and created seed_roles.py
This commit is contained in:
parent
dc46608ede
commit
4fc1f9f2d4
@ -1,79 +0,0 @@
|
|||||||
"""add request revision
|
|
||||||
|
|
||||||
Revision ID: 04fe150da553
|
|
||||||
Revises: 2c2a2af465d3
|
|
||||||
Create Date: 2018-08-30 13:28:16.928946
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects.postgresql import ARRAY as Array
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '04fe150da553'
|
|
||||||
down_revision = '2c2a2af465d3'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('request_revisions',
|
|
||||||
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('request_id', postgresql.UUID(as_uuid=True), nullable=False),
|
|
||||||
sa.Column('am_poc', sa.Boolean(), nullable=True),
|
|
||||||
sa.Column('dodid_poc', sa.String(), nullable=True),
|
|
||||||
sa.Column('email_poc', sa.String(), nullable=True),
|
|
||||||
sa.Column('fname_poc', sa.String(), nullable=True),
|
|
||||||
sa.Column('lname_poc', sa.String(), nullable=True),
|
|
||||||
sa.Column('jedi_usage', sa.String(), nullable=True),
|
|
||||||
sa.Column('start_date', sa.Date(), nullable=True),
|
|
||||||
sa.Column('cloud_native', sa.String(), nullable=True),
|
|
||||||
sa.Column('dollar_value', sa.Integer(), nullable=True),
|
|
||||||
sa.Column('dod_component', sa.String(), nullable=True),
|
|
||||||
sa.Column('data_transfers', sa.String(), nullable=True),
|
|
||||||
sa.Column('expected_completion_date', sa.String(), nullable=True),
|
|
||||||
sa.Column('jedi_migration', sa.String(), nullable=True),
|
|
||||||
sa.Column('num_software_systems', sa.Integer(), nullable=True),
|
|
||||||
sa.Column('number_user_sessions', sa.Integer(), nullable=True),
|
|
||||||
sa.Column('average_daily_traffic', sa.Integer(), nullable=True),
|
|
||||||
sa.Column('engineering_assessment', sa.String(), nullable=True),
|
|
||||||
sa.Column('technical_support_team', sa.String(), nullable=True),
|
|
||||||
sa.Column('estimated_monthly_spend', sa.Integer(), nullable=True),
|
|
||||||
sa.Column('average_daily_traffic_gb', sa.Integer(), nullable=True),
|
|
||||||
sa.Column('rationalization_software_systems', sa.String(), nullable=True),
|
|
||||||
sa.Column('organization_providing_assistance', sa.String(), nullable=True),
|
|
||||||
sa.Column('citizenship', sa.String(), nullable=True),
|
|
||||||
sa.Column('designation', sa.String(), nullable=True),
|
|
||||||
sa.Column('phone_number', sa.String(), nullable=True),
|
|
||||||
sa.Column('email_request', sa.String(), nullable=True),
|
|
||||||
sa.Column('fname_request', sa.String(), nullable=True),
|
|
||||||
sa.Column('lname_request', sa.String(), nullable=True),
|
|
||||||
sa.Column('service_branch', sa.String(), nullable=True),
|
|
||||||
sa.Column('date_latest_training', sa.Date(), nullable=True),
|
|
||||||
sa.Column('pe_id', sa.String(), nullable=True),
|
|
||||||
sa.Column('task_order_number', sa.String(), nullable=True),
|
|
||||||
sa.Column('fname_co', sa.String(), nullable=True),
|
|
||||||
sa.Column('lname_co', sa.String(), nullable=True),
|
|
||||||
sa.Column('email_co', sa.String(), nullable=True),
|
|
||||||
sa.Column('office_co', sa.String(), nullable=True),
|
|
||||||
sa.Column('fname_cor', sa.String(), nullable=True),
|
|
||||||
sa.Column('lname_cor', sa.String(), nullable=True),
|
|
||||||
sa.Column('email_cor', sa.String(), nullable=True),
|
|
||||||
sa.Column('office_cor', sa.String(), nullable=True),
|
|
||||||
sa.Column('uii_ids', Array(sa.String()), nullable=True),
|
|
||||||
sa.Column('treasury_code', sa.String(), nullable=True),
|
|
||||||
sa.Column('ba_code', sa.String(), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_table('request_revisions')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,43 +0,0 @@
|
|||||||
"""rename request creator
|
|
||||||
|
|
||||||
Revision ID: 05d6272bdb43
|
|
||||||
Revises: 77b065750596
|
|
||||||
Create Date: 2018-08-07 20:21:22.559283
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '05d6272bdb43'
|
|
||||||
down_revision = '77b065750596'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
db = op.get_bind()
|
|
||||||
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('requests', sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True))
|
|
||||||
op.create_foreign_key('requests_user_id_fk', 'requests', 'users', ['user_id'], ['id'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
db.execute("UPDATE requests SET user_id = creator")
|
|
||||||
|
|
||||||
op.alter_column('requests', 'user_id', nullable=False)
|
|
||||||
op.drop_column('requests', 'creator')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
db = op.get_bind()
|
|
||||||
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('requests', sa.Column('creator', postgresql.UUID(), autoincrement=False, nullable=True))
|
|
||||||
op.drop_constraint('requests_user_id_fk', 'requests', type_='foreignkey')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
db.execute("UPDATE requests SET creator = user_id")
|
|
||||||
op.drop_column('requests', 'user_id')
|
|
@ -1,32 +0,0 @@
|
|||||||
"""make status event relation to revision non-nullable
|
|
||||||
|
|
||||||
Revision ID: 06aa23166ca9
|
|
||||||
Revises: e66a49285f23
|
|
||||||
Create Date: 2018-09-04 15:03:20.299607
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '06aa23166ca9'
|
|
||||||
down_revision = 'e66a49285f23'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.alter_column('request_status_events', 'request_revision_id',
|
|
||||||
existing_type=postgresql.UUID(),
|
|
||||||
nullable=False)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.alter_column('request_status_events', 'request_revision_id',
|
|
||||||
existing_type=postgresql.UUID(),
|
|
||||||
nullable=True)
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,30 +0,0 @@
|
|||||||
"""add request -> task order relationship
|
|
||||||
|
|
||||||
Revision ID: 0845b2f0f401
|
|
||||||
Revises: 875e4b8a05fc
|
|
||||||
Create Date: 2018-08-22 09:58:43.770718
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '0845b2f0f401'
|
|
||||||
down_revision = '875e4b8a05fc'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('requests', sa.Column('task_order_id', sa.Integer(), nullable=True))
|
|
||||||
op.create_foreign_key(None, 'requests', 'task_order', ['task_order_id'], ['id'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint(None, 'requests', type_='foreignkey')
|
|
||||||
op.drop_column('requests', 'task_order_id')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,79 +0,0 @@
|
|||||||
"""remove revisions body column
|
|
||||||
|
|
||||||
Revision ID: 090e1bd0d7ce
|
|
||||||
Revises: a903ebe91ad5
|
|
||||||
Create Date: 2018-08-31 12:08:52.376027
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
from atst.models.request import Request
|
|
||||||
from atst.utils import deep_merge
|
|
||||||
from atst.domain.requests import create_revision_from_request_body
|
|
||||||
from atst.domain.task_orders import TaskOrders
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '090e1bd0d7ce'
|
|
||||||
down_revision = 'a903ebe91ad5'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def delete_two_deep(body, key1, key2):
|
|
||||||
result = body.get(key1, {}).get(key2)
|
|
||||||
if result:
|
|
||||||
del(body[key1][key2])
|
|
||||||
|
|
||||||
return body
|
|
||||||
|
|
||||||
|
|
||||||
TASK_ORDER_DATA = TaskOrders.TASK_ORDER_DATA + ["task_order_id", "csrf_token"]
|
|
||||||
|
|
||||||
def create_revision(body):
|
|
||||||
financials = body.get("financial_verification")
|
|
||||||
if financials:
|
|
||||||
for column in TASK_ORDER_DATA:
|
|
||||||
if column in financials:
|
|
||||||
del(financials[column])
|
|
||||||
|
|
||||||
return create_revision_from_request_body(body)
|
|
||||||
|
|
||||||
|
|
||||||
def massaged_revision(body):
|
|
||||||
try:
|
|
||||||
return create_revision(body)
|
|
||||||
except ValueError:
|
|
||||||
# some of the data on staging has out-of-range dates like "02/29/2019";
|
|
||||||
# we don't know how to coerce them to valid dates, so we remove those
|
|
||||||
# fields.
|
|
||||||
body = delete_two_deep(body, "details_of_use", "start_date")
|
|
||||||
body = delete_two_deep(body, "information_about_you", "date_latest_training")
|
|
||||||
|
|
||||||
return create_revision(body)
|
|
||||||
|
|
||||||
from uuid import UUID
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
Session = sessionmaker(bind=op.get_bind())
|
|
||||||
session = Session()
|
|
||||||
for request in session.query(Request).all():
|
|
||||||
(body,) = session.execute("SELECT body from requests WHERE id='{}'".format(request.id)).fetchone()
|
|
||||||
|
|
||||||
revision = massaged_revision(body)
|
|
||||||
request.revisions.append(revision)
|
|
||||||
|
|
||||||
session.add(revision)
|
|
||||||
session.add(request)
|
|
||||||
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
op.drop_column('requests', 'body')
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
op.add_column('requests', sa.Column('body', postgresql.JSONB(astext_type=sa.Text()), autoincrement=False, nullable=True))
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
"""add task order association to attachments
|
|
||||||
|
|
||||||
Revision ID: 14cd800904bc
|
|
||||||
Revises: d7db8fd35b41
|
|
||||||
Create Date: 2018-08-24 11:28:30.894412
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '14cd800904bc'
|
|
||||||
down_revision = 'd7db8fd35b41'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('task_order', sa.Column('attachment_id', sa.Integer(), nullable=True))
|
|
||||||
op.create_foreign_key(None, 'task_order', 'attachments', ['attachment_id'], ['id'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint(None, 'task_order', type_='foreignkey')
|
|
||||||
op.drop_column('task_order', 'attachment_id')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,38 +0,0 @@
|
|||||||
"""update_user_from_authnid
|
|
||||||
|
|
||||||
Revision ID: 1f57f784ed5b
|
|
||||||
Revises: 55ba973d08b9
|
|
||||||
Create Date: 2018-07-30 16:53:05.945005
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '1f57f784ed5b'
|
|
||||||
down_revision = '55ba973d08b9'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('users', sa.Column('dod_id', sa.String(), nullable=True))
|
|
||||||
op.add_column('users', sa.Column('email', sa.String(), nullable=True))
|
|
||||||
op.add_column('users', sa.Column('first_name', sa.String(), nullable=True))
|
|
||||||
op.add_column('users', sa.Column('last_name', sa.String(), nullable=True))
|
|
||||||
op.create_unique_constraint('users_dod_id_unique', 'users', ['dod_id'])
|
|
||||||
op.create_unique_constraint('users_email_unqiue', 'users', ['email'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint('users_dod_id_unique', 'users', type_='unique')
|
|
||||||
op.drop_constraint('users_email_unqiue', 'users', type_='unique')
|
|
||||||
op.drop_column('users', 'last_name')
|
|
||||||
op.drop_column('users', 'first_name')
|
|
||||||
op.drop_column('users', 'email')
|
|
||||||
op.drop_column('users', 'dod_id')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,36 +0,0 @@
|
|||||||
"""add request.internal_comments
|
|
||||||
|
|
||||||
Revision ID: 2572be7fb7fc
|
|
||||||
Revises: dea6b8e09d63
|
|
||||||
Create Date: 2018-09-11 15:28:27.252248
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '2572be7fb7fc'
|
|
||||||
down_revision = 'dea6b8e09d63'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('request_internal_comments',
|
|
||||||
sa.Column('id', sa.BigInteger(), nullable=False),
|
|
||||||
sa.Column('text', sa.String(), nullable=True),
|
|
||||||
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False),
|
|
||||||
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ondelete='CASCADE'),
|
|
||||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_table('request_internal_comments')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,44 +0,0 @@
|
|||||||
"""add PE numbers
|
|
||||||
|
|
||||||
Revision ID: 2c2a2af465d3
|
|
||||||
Revises: 14cd800904bc
|
|
||||||
Create Date: 2018-08-27 16:26:51.707146
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects.postgresql import insert
|
|
||||||
from urllib.request import urlopen
|
|
||||||
import csv
|
|
||||||
|
|
||||||
from atst.app import make_config
|
|
||||||
from atst.models.pe_number import PENumber
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '2c2a2af465d3'
|
|
||||||
down_revision = '14cd800904bc'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def get_pe_numbers(url):
|
|
||||||
response = urlopen(url)
|
|
||||||
t = response.read().decode("utf-8")
|
|
||||||
return list(csv.reader(t.split("\r\n")))
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
config = make_config()
|
|
||||||
pe_numbers = get_pe_numbers(config["PE_NUMBER_CSV_URL"])
|
|
||||||
db = op.get_bind()
|
|
||||||
stmt = insert(PENumber).values(pe_numbers)
|
|
||||||
do_update = stmt.on_conflict_do_update(
|
|
||||||
index_elements=["number"], set_=dict(description=stmt.excluded.description)
|
|
||||||
)
|
|
||||||
db.execute(do_update)
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
db = op.get_bind()
|
|
||||||
db.execute("TRUNCATE TABLE pe_number")
|
|
@ -1,37 +0,0 @@
|
|||||||
"""add workspaces table
|
|
||||||
|
|
||||||
Revision ID: 4be312655ceb
|
|
||||||
Revises: 05d6272bdb43
|
|
||||||
Create Date: 2018-08-16 09:25:19.888549
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '4be312655ceb'
|
|
||||||
down_revision = '05d6272bdb43'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('workspaces',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=False),
|
|
||||||
sa.Column('task_order_id', sa.Integer(), nullable=False),
|
|
||||||
sa.Column('name', sa.String(), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ),
|
|
||||||
sa.ForeignKeyConstraint(['task_order_id'], ['task_order.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id'),
|
|
||||||
sa.UniqueConstraint('name')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_table('workspaces')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,43 +0,0 @@
|
|||||||
"""add edit workspace information permission
|
|
||||||
|
|
||||||
Revision ID: 4c425f17bfe8
|
|
||||||
Revises: 2572be7fb7fc
|
|
||||||
Create Date: 2018-09-17 13:14:38.781744
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
from sqlalchemy.orm.session import Session
|
|
||||||
|
|
||||||
from atst.models.role import Role
|
|
||||||
from atst.models.permissions import Permissions
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '4c425f17bfe8'
|
|
||||||
down_revision = '2572be7fb7fc'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
|
|
||||||
owner_and_admin = session.query(Role).filter(Role.name.in_(["owner", "admin"])).all()
|
|
||||||
for role in owner_and_admin:
|
|
||||||
role.add_permission(Permissions.EDIT_WORKSPACE_INFORMATION)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
session.flush()
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
|
|
||||||
owner_and_admin = session.query(Role).filter(Role.name.in_(["owner", "admin"])).all()
|
|
||||||
for role in owner_and_admin:
|
|
||||||
role.remove_permission(Permissions.EDIT_WORKSPACE_INFORMATION)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
session.flush()
|
|
||||||
session.commit()
|
|
@ -1,37 +0,0 @@
|
|||||||
"""add_default_atat_role
|
|
||||||
|
|
||||||
Revision ID: 4ea5917e7781
|
|
||||||
Revises: 96a9f3537996
|
|
||||||
Create Date: 2018-07-30 13:51:29.576931
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.orm.session import Session
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '4ea5917e7781'
|
|
||||||
down_revision = '96a9f3537996'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
from atst.models.role import Role
|
|
||||||
from atst.models.permissions import Permissions
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
mission_owner_role = Role(
|
|
||||||
name='default',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.REQUEST_JEDI_WORKSPACE,
|
|
||||||
]
|
|
||||||
)
|
|
||||||
session.add(mission_owner_role)
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
pass
|
|
@ -1,62 +0,0 @@
|
|||||||
"""add_authz_models
|
|
||||||
|
|
||||||
Revision ID: 4ede1e3e50d1
|
|
||||||
Revises: b5b17d465166
|
|
||||||
Create Date: 2018-07-30 11:34:12.016857
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '4ede1e3e50d1'
|
|
||||||
down_revision = 'b5b17d465166'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('roles',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('name', sa.String(), nullable=True),
|
|
||||||
sa.Column('description', sa.String(), nullable=True),
|
|
||||||
sa.Column('permissions', postgresql.ARRAY(sa.String()), server_default='{}', nullable=True),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.create_index(op.f('ix_roles_name'), 'roles', ['name'], unique=True)
|
|
||||||
op.create_index(op.f('ix_roles_permissions'), 'roles', ['permissions'], unique=False)
|
|
||||||
op.create_table('users',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('username', sa.String(), nullable=True),
|
|
||||||
sa.Column('atat_role_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['atat_role_id'], ['roles.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.create_table('workspace_role',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('workspace_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.Column('role_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['role_id'], ['roles.id'], ),
|
|
||||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.create_index(op.f('ix_workspace_role_user_id'), 'workspace_role', ['user_id'], unique=False)
|
|
||||||
op.create_index(op.f('ix_workspace_role_workspace_id'), 'workspace_role', ['workspace_id'], unique=False)
|
|
||||||
op.create_index('workspace_role_user_workspace', 'workspace_role', ['user_id', 'workspace_id'], unique=True)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_index('workspace_role_user_workspace', table_name='workspace_role')
|
|
||||||
op.drop_index(op.f('ix_workspace_role_workspace_id'), table_name='workspace_role')
|
|
||||||
op.drop_index(op.f('ix_workspace_role_user_id'), table_name='workspace_role')
|
|
||||||
op.drop_table('workspace_role')
|
|
||||||
op.drop_table('users')
|
|
||||||
op.drop_index(op.f('ix_roles_permissions'), table_name='roles')
|
|
||||||
op.drop_index(op.f('ix_roles_name'), table_name='roles')
|
|
||||||
op.drop_table('roles')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,28 +0,0 @@
|
|||||||
"""add expiration date to task order
|
|
||||||
|
|
||||||
Revision ID: 4f4defb7b440
|
|
||||||
Revises: 4c425f17bfe8
|
|
||||||
Create Date: 2018-09-17 15:22:33.240310
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '4f4defb7b440'
|
|
||||||
down_revision = '4c425f17bfe8'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('task_order', sa.Column('expiration_date', sa.Date(), nullable=True))
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('task_order', 'expiration_date')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,30 +0,0 @@
|
|||||||
"""request_reviews comment column name
|
|
||||||
|
|
||||||
Revision ID: 53ab3edd334b
|
|
||||||
Revises: 777ded5c57a0
|
|
||||||
Create Date: 2018-09-10 13:29:02.648359
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '53ab3edd334b'
|
|
||||||
down_revision = '777ded5c57a0'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('request_reviews', sa.Column('comment', sa.String(), nullable=True))
|
|
||||||
op.drop_column('request_reviews', 'comments')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('request_reviews', sa.Column('comments', sa.VARCHAR(), autoincrement=False, nullable=True))
|
|
||||||
op.drop_column('request_reviews', 'comment')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,38 +0,0 @@
|
|||||||
"""add_fundz_models
|
|
||||||
|
|
||||||
Revision ID: 55ba973d08b9
|
|
||||||
Revises: 4ea5917e7781
|
|
||||||
Create Date: 2018-07-30 14:43:34.099799
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '55ba973d08b9'
|
|
||||||
down_revision = '4ea5917e7781'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('pe_number',
|
|
||||||
sa.Column('number', sa.String(), nullable=False),
|
|
||||||
sa.Column('description', sa.String(), nullable=True),
|
|
||||||
sa.PrimaryKeyConstraint('number')
|
|
||||||
)
|
|
||||||
op.create_table('task_order',
|
|
||||||
sa.Column('id', sa.Integer(), nullable=False),
|
|
||||||
sa.Column('number', sa.String(), nullable=True),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_table('task_order')
|
|
||||||
op.drop_table('pe_number')
|
|
||||||
# ### end Alembic commands ###
|
|
261
alembic/versions/74ac90c019bf_initial.py
Normal file
261
alembic/versions/74ac90c019bf_initial.py
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
"""initial
|
||||||
|
|
||||||
|
Revision ID: 74ac90c019bf
|
||||||
|
Revises:
|
||||||
|
Create Date: 2018-09-18 21:00:05.497858
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from sqlalchemy.dialects import postgresql
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '74ac90c019bf'
|
||||||
|
down_revision = None
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
connection = op.get_bind()
|
||||||
|
connection.execute('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"')
|
||||||
|
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.create_table('attachments',
|
||||||
|
sa.Column('id', sa.Integer(), nullable=False),
|
||||||
|
sa.Column('filename', sa.String(), nullable=True),
|
||||||
|
sa.Column('object_name', sa.String(), nullable=True),
|
||||||
|
sa.PrimaryKeyConstraint('id'),
|
||||||
|
sa.UniqueConstraint('object_name')
|
||||||
|
)
|
||||||
|
op.create_table('pe_number',
|
||||||
|
sa.Column('number', sa.String(), nullable=False),
|
||||||
|
sa.Column('description', sa.String(), nullable=True),
|
||||||
|
sa.PrimaryKeyConstraint('number')
|
||||||
|
)
|
||||||
|
op.create_table('roles',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('name', sa.String(), nullable=True),
|
||||||
|
sa.Column('description', sa.String(), nullable=True),
|
||||||
|
sa.Column('permissions', postgresql.ARRAY(sa.String()), server_default='{}', nullable=True),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_index(op.f('ix_roles_name'), 'roles', ['name'], unique=True)
|
||||||
|
op.create_index(op.f('ix_roles_permissions'), 'roles', ['permissions'], unique=False)
|
||||||
|
op.create_table('task_order',
|
||||||
|
sa.Column('id', sa.Integer(), nullable=False),
|
||||||
|
sa.Column('number', sa.String(), nullable=True),
|
||||||
|
sa.Column('source', sa.Enum('MANUAL', 'EDA', name='source', native_enum=False), nullable=True),
|
||||||
|
sa.Column('funding_type', sa.Enum('RDTE', 'OM', 'PROC', 'OTHER', name='fundingtype', native_enum=False), nullable=True),
|
||||||
|
sa.Column('funding_type_other', sa.String(), nullable=True),
|
||||||
|
sa.Column('clin_0001', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('clin_0003', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('clin_1001', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('clin_1003', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('clin_2001', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('clin_2003', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('expiration_date', sa.Date(), nullable=True),
|
||||||
|
sa.Column('attachment_id', sa.Integer(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['attachment_id'], ['attachments.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id'),
|
||||||
|
sa.UniqueConstraint('number')
|
||||||
|
)
|
||||||
|
op.create_table('users',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('username', sa.String(), nullable=True),
|
||||||
|
sa.Column('atat_role_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.Column('email', sa.String(), nullable=True),
|
||||||
|
sa.Column('dod_id', sa.String(), nullable=True),
|
||||||
|
sa.Column('first_name', sa.String(), nullable=True),
|
||||||
|
sa.Column('last_name', sa.String(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['atat_role_id'], ['roles.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id'),
|
||||||
|
sa.UniqueConstraint('dod_id'),
|
||||||
|
sa.UniqueConstraint('email')
|
||||||
|
)
|
||||||
|
op.create_table('request_reviews',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.Column('comment', sa.String(), nullable=True),
|
||||||
|
sa.Column('fname_mao', sa.String(), nullable=True),
|
||||||
|
sa.Column('lname_mao', sa.String(), nullable=True),
|
||||||
|
sa.Column('email_mao', sa.String(), nullable=True),
|
||||||
|
sa.Column('phone_mao', sa.String(), nullable=True),
|
||||||
|
sa.Column('fname_ccpo', sa.String(), nullable=True),
|
||||||
|
sa.Column('lname_ccpo', sa.String(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('requests',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('time_created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||||
|
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.Column('task_order_id', sa.Integer(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['task_order_id'], ['task_order.id'], ),
|
||||||
|
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('request_internal_comments',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('text', sa.String(), nullable=True),
|
||||||
|
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ondelete='CASCADE'),
|
||||||
|
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('request_revisions',
|
||||||
|
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('name', sa.String(), nullable=True),
|
||||||
|
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.Column('sequence', sa.BigInteger(), nullable=False),
|
||||||
|
sa.Column('am_poc', sa.Boolean(), nullable=True),
|
||||||
|
sa.Column('dodid_poc', sa.String(), nullable=True),
|
||||||
|
sa.Column('email_poc', sa.String(), nullable=True),
|
||||||
|
sa.Column('fname_poc', sa.String(), nullable=True),
|
||||||
|
sa.Column('lname_poc', sa.String(), nullable=True),
|
||||||
|
sa.Column('jedi_usage', sa.String(), nullable=True),
|
||||||
|
sa.Column('start_date', sa.Date(), nullable=True),
|
||||||
|
sa.Column('cloud_native', sa.String(), nullable=True),
|
||||||
|
sa.Column('dollar_value', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('dod_component', sa.String(), nullable=True),
|
||||||
|
sa.Column('data_transfers', sa.String(), nullable=True),
|
||||||
|
sa.Column('expected_completion_date', sa.String(), nullable=True),
|
||||||
|
sa.Column('jedi_migration', sa.String(), nullable=True),
|
||||||
|
sa.Column('num_software_systems', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('number_user_sessions', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('average_daily_traffic', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('engineering_assessment', sa.String(), nullable=True),
|
||||||
|
sa.Column('technical_support_team', sa.String(), nullable=True),
|
||||||
|
sa.Column('estimated_monthly_spend', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('average_daily_traffic_gb', sa.Integer(), nullable=True),
|
||||||
|
sa.Column('rationalization_software_systems', sa.String(), nullable=True),
|
||||||
|
sa.Column('organization_providing_assistance', sa.String(), nullable=True),
|
||||||
|
sa.Column('citizenship', sa.String(), nullable=True),
|
||||||
|
sa.Column('designation', sa.String(), nullable=True),
|
||||||
|
sa.Column('phone_number', sa.String(), nullable=True),
|
||||||
|
sa.Column('email_request', sa.String(), nullable=True),
|
||||||
|
sa.Column('fname_request', sa.String(), nullable=True),
|
||||||
|
sa.Column('lname_request', sa.String(), nullable=True),
|
||||||
|
sa.Column('service_branch', sa.String(), nullable=True),
|
||||||
|
sa.Column('date_latest_training', sa.Date(), nullable=True),
|
||||||
|
sa.Column('pe_id', sa.String(), nullable=True),
|
||||||
|
sa.Column('task_order_number', sa.String(), nullable=True),
|
||||||
|
sa.Column('fname_co', sa.String(), nullable=True),
|
||||||
|
sa.Column('lname_co', sa.String(), nullable=True),
|
||||||
|
sa.Column('email_co', sa.String(), nullable=True),
|
||||||
|
sa.Column('office_co', sa.String(), nullable=True),
|
||||||
|
sa.Column('fname_cor', sa.String(), nullable=True),
|
||||||
|
sa.Column('lname_cor', sa.String(), nullable=True),
|
||||||
|
sa.Column('email_cor', sa.String(), nullable=True),
|
||||||
|
sa.Column('office_cor', sa.String(), nullable=True),
|
||||||
|
sa.Column('uii_ids', postgresql.ARRAY(sa.String()), nullable=True),
|
||||||
|
sa.Column('treasury_code', sa.String(), nullable=True),
|
||||||
|
sa.Column('ba_code', sa.String(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('workspaces',
|
||||||
|
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('name', sa.String(), nullable=True),
|
||||||
|
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id'),
|
||||||
|
sa.UniqueConstraint('name')
|
||||||
|
)
|
||||||
|
op.create_table('projects',
|
||||||
|
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('name', sa.String(), nullable=False),
|
||||||
|
sa.Column('description', sa.String(), nullable=False),
|
||||||
|
sa.Column('workspace_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.ForeignKeyConstraint(['workspace_id'], ['workspaces.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('request_status_events',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('new_status', sa.Enum('STARTED', 'SUBMITTED', 'PENDING_FINANCIAL_VERIFICATION', 'PENDING_CCPO_ACCEPTANCE', 'PENDING_CCPO_APPROVAL', 'CHANGES_REQUESTED', 'CHANGES_REQUESTED_TO_FINVER', 'APPROVED', 'EXPIRED', 'DELETED', name='requeststatus', native_enum=False), nullable=True),
|
||||||
|
sa.Column('time_created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||||
|
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.Column('sequence', sa.BigInteger(), nullable=False),
|
||||||
|
sa.Column('request_revision_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||||
|
sa.Column('request_review_id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ondelete='CASCADE'),
|
||||||
|
sa.ForeignKeyConstraint(['request_review_id'], ['request_reviews.id'], ),
|
||||||
|
sa.ForeignKeyConstraint(['request_revision_id'], ['request_revisions.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('workspace_role',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('workspace_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.Column('role_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['role_id'], ['roles.id'], ),
|
||||||
|
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
||||||
|
sa.ForeignKeyConstraint(['workspace_id'], ['workspaces.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_index(op.f('ix_workspace_role_user_id'), 'workspace_role', ['user_id'], unique=False)
|
||||||
|
op.create_index(op.f('ix_workspace_role_workspace_id'), 'workspace_role', ['workspace_id'], unique=False)
|
||||||
|
op.create_index('workspace_role_user_workspace', 'workspace_role', ['user_id', 'workspace_id'], unique=True)
|
||||||
|
op.create_table('environments',
|
||||||
|
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('name', sa.String(), nullable=False),
|
||||||
|
sa.Column('project_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['project_id'], ['projects.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_table('environment_roles',
|
||||||
|
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
||||||
|
sa.Column('environment_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.Column('role', sa.String(), nullable=True),
|
||||||
|
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(['environment_id'], ['environments.id'], ),
|
||||||
|
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
||||||
|
sa.PrimaryKeyConstraint('id')
|
||||||
|
)
|
||||||
|
op.create_index('environments_role_user_environment', 'environment_roles', ['user_id', 'environment_id'], unique=True)
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
connection.execute(
|
||||||
|
"CREATE SEQUENCE request_status_events_sequence_seq OWNED BY request_status_events.sequence;"
|
||||||
|
)
|
||||||
|
connection.execute(
|
||||||
|
"CREATE SEQUENCE request_revisions_sequence_seq OWNED BY request_revisions.sequence;"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_index('environments_role_user_environment', table_name='environment_roles')
|
||||||
|
op.drop_table('environment_roles')
|
||||||
|
op.drop_table('environments')
|
||||||
|
op.drop_index('workspace_role_user_workspace', table_name='workspace_role')
|
||||||
|
op.drop_index(op.f('ix_workspace_role_workspace_id'), table_name='workspace_role')
|
||||||
|
op.drop_index(op.f('ix_workspace_role_user_id'), table_name='workspace_role')
|
||||||
|
op.drop_table('workspace_role')
|
||||||
|
op.drop_table('request_status_events')
|
||||||
|
op.drop_table('projects')
|
||||||
|
op.drop_table('workspaces')
|
||||||
|
op.drop_table('request_revisions')
|
||||||
|
op.drop_table('request_internal_comments')
|
||||||
|
op.drop_table('requests')
|
||||||
|
op.drop_table('request_reviews')
|
||||||
|
op.drop_table('users')
|
||||||
|
op.drop_table('task_order')
|
||||||
|
op.drop_index(op.f('ix_roles_permissions'), table_name='roles')
|
||||||
|
op.drop_index(op.f('ix_roles_name'), table_name='roles')
|
||||||
|
op.drop_table('roles')
|
||||||
|
op.drop_table('pe_number')
|
||||||
|
op.drop_table('attachments')
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
connection = op.get_bind()
|
||||||
|
connection.execute('DROP EXTENSION IF EXISTS "uuid-ossp"')
|
@ -1,36 +0,0 @@
|
|||||||
"""bigint for request review id
|
|
||||||
|
|
||||||
Revision ID: 777ded5c57a0
|
|
||||||
Revises: 7bdb2055d7c7
|
|
||||||
Create Date: 2018-09-10 13:24:36.328610
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '777ded5c57a0'
|
|
||||||
down_revision = '7bdb2055d7c7'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.alter_column('request_reviews', 'id',
|
|
||||||
existing_type=sa.Integer(),
|
|
||||||
type_=sa.BigInteger(),
|
|
||||||
nullable=False)
|
|
||||||
pass
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.alter_column('request_reviews', 'id',
|
|
||||||
existing_type=sa.BigInteger(),
|
|
||||||
type_=sa.Integer(),
|
|
||||||
nullable=False)
|
|
||||||
pass
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,49 +0,0 @@
|
|||||||
"""new request statuses
|
|
||||||
|
|
||||||
Revision ID: 77b065750596
|
|
||||||
Revises: 1f57f784ed5b
|
|
||||||
Create Date: 2018-08-07 16:42:11.502361
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.orm.session import sessionmaker
|
|
||||||
|
|
||||||
from atst.models.request_status_event import RequestStatus
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '77b065750596'
|
|
||||||
down_revision = '1f57f784ed5b'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
"""
|
|
||||||
Update all existing request statuses so that the state of the
|
|
||||||
table reflects the statuses listed in RequestStatus.
|
|
||||||
|
|
||||||
This involves fixing the casing on existing statuses, and
|
|
||||||
deleting statuses that have no match.
|
|
||||||
"""
|
|
||||||
|
|
||||||
db = op.get_bind()
|
|
||||||
|
|
||||||
status_events = db.execute("SELECT * FROM request_status_events").fetchall()
|
|
||||||
for status_event in status_events:
|
|
||||||
try:
|
|
||||||
status = RequestStatus[status_event["new_status"].upper()]
|
|
||||||
query = sa.text("""
|
|
||||||
UPDATE request_status_events
|
|
||||||
SET new_status = :status
|
|
||||||
WHERE id = :id"""
|
|
||||||
)
|
|
||||||
db.execute(query, id=status_event["id"], status=status.name)
|
|
||||||
except KeyError:
|
|
||||||
query = sa.text("DELETE FROM request_status_events WHERE id = :id")
|
|
||||||
db.execute(query, id=status_event["id"])
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
pass
|
|
@ -1,46 +0,0 @@
|
|||||||
"""add request review table
|
|
||||||
|
|
||||||
Revision ID: 7bdb2055d7c7
|
|
||||||
Revises: ad30159ef19b
|
|
||||||
Create Date: 2018-09-06 15:15:40.666840
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '7bdb2055d7c7'
|
|
||||||
down_revision = 'ad30159ef19b'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('request_reviews',
|
|
||||||
sa.Column('id', sa.Integer(), nullable=False),
|
|
||||||
sa.Column('comments', sa.String(), nullable=True),
|
|
||||||
sa.Column('fname_mao', sa.String(), nullable=True),
|
|
||||||
sa.Column('lname_mao', sa.String(), nullable=True),
|
|
||||||
sa.Column('email_mao', sa.String(), nullable=True),
|
|
||||||
sa.Column('phone_mao', sa.String(), nullable=True),
|
|
||||||
sa.Column('fname_ccpo', sa.String(), nullable=True),
|
|
||||||
sa.Column('lname_ccpo', sa.String(), nullable=True),
|
|
||||||
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.add_column('request_status_events', sa.Column('request_review_id', sa.Integer(), nullable=True))
|
|
||||||
op.create_foreign_key(None, 'request_status_events', 'request_reviews', ['request_review_id'], ['id'])
|
|
||||||
op.create_foreign_key(None, 'request_reviews', 'users', ['user_id'], ['id'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint(None, 'request_status_events', type_='foreignkey')
|
|
||||||
op.drop_constraint(None, 'request_reviews', type_='foreignkey')
|
|
||||||
op.drop_column('request_status_events', 'request_review_id')
|
|
||||||
op.drop_table('request_reviews')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,44 +0,0 @@
|
|||||||
"""add additional task order fields
|
|
||||||
|
|
||||||
Revision ID: 875e4b8a05fc
|
|
||||||
Revises: f36f130622b9
|
|
||||||
Create Date: 2018-08-21 15:52:46.636928
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '875e4b8a05fc'
|
|
||||||
down_revision = 'f36f130622b9'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('task_order', sa.Column('clin_0001', sa.Integer(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('clin_0003', sa.Integer(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('clin_1001', sa.Integer(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('clin_1003', sa.Integer(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('clin_2001', sa.Integer(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('clin_2003', sa.Integer(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('funding_type', sa.String(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('funding_type_other', sa.String(), nullable=True))
|
|
||||||
op.add_column('task_order', sa.Column('source', sa.String(), nullable=True))
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('task_order', 'source')
|
|
||||||
op.drop_column('task_order', 'funding_type_other')
|
|
||||||
op.drop_column('task_order', 'funding_type')
|
|
||||||
op.drop_column('task_order', 'clin_2003')
|
|
||||||
op.drop_column('task_order', 'clin_2001')
|
|
||||||
op.drop_column('task_order', 'clin_1003')
|
|
||||||
op.drop_column('task_order', 'clin_1001')
|
|
||||||
op.drop_column('task_order', 'clin_0003')
|
|
||||||
op.drop_column('task_order', 'clin_0001')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,172 +0,0 @@
|
|||||||
"""add_roles_and_permissions
|
|
||||||
|
|
||||||
Revision ID: 96a9f3537996
|
|
||||||
Revises: 4ede1e3e50d1
|
|
||||||
Create Date: 2018-07-30 13:48:31.325234
|
|
||||||
|
|
||||||
"""
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
from sqlalchemy.orm.session import Session
|
|
||||||
|
|
||||||
from atst.models.role import Role
|
|
||||||
from atst.models.permissions import Permissions
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '96a9f3537996'
|
|
||||||
down_revision = '4ede1e3e50d1'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
roles = [
|
|
||||||
Role(
|
|
||||||
name='ccpo',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.VIEW_ORIGINAL_JEDI_REQEUST,
|
|
||||||
Permissions.REVIEW_AND_APPROVE_JEDI_WORKSPACE_REQUEST,
|
|
||||||
Permissions.MODIFY_ATAT_ROLE_PERMISSIONS,
|
|
||||||
Permissions.CREATE_CSP_ROLE,
|
|
||||||
Permissions.DELETE_CSP_ROLE,
|
|
||||||
Permissions.DEACTIVE_CSP_ROLE,
|
|
||||||
Permissions.MODIFY_CSP_ROLE_PERMISSIONS,
|
|
||||||
|
|
||||||
Permissions.VIEW_USAGE_REPORT,
|
|
||||||
Permissions.VIEW_USAGE_DOLLARS,
|
|
||||||
Permissions.ADD_AND_ASSIGN_CSP_ROLES,
|
|
||||||
Permissions.REMOVE_CSP_ROLES,
|
|
||||||
Permissions.REQUEST_NEW_CSP_ROLE,
|
|
||||||
Permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE,
|
|
||||||
|
|
||||||
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
|
||||||
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
|
||||||
|
|
||||||
Permissions.DEACTIVATE_WORKSPACE,
|
|
||||||
Permissions.VIEW_ATAT_PERMISSIONS,
|
|
||||||
Permissions.TRANSFER_OWNERSHIP_OF_WORKSPACE,
|
|
||||||
|
|
||||||
Permissions.ADD_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.DELETE_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.DEACTIVATE_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.RENAME_APPLICATION_IN_WORKSPACE,
|
|
||||||
|
|
||||||
Permissions.ADD_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.DELETE_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.DEACTIVATE_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.RENAME_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
|
|
||||||
Permissions.ADD_TAG_TO_WORKSPACE,
|
|
||||||
Permissions.REMOVE_TAG_FROM_WORKSPACE
|
|
||||||
]
|
|
||||||
),
|
|
||||||
Role(
|
|
||||||
name='owner',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.REQUEST_JEDI_WORKSPACE,
|
|
||||||
Permissions.VIEW_ORIGINAL_JEDI_REQEUST,
|
|
||||||
|
|
||||||
Permissions.VIEW_USAGE_REPORT,
|
|
||||||
Permissions.VIEW_USAGE_DOLLARS,
|
|
||||||
Permissions.ADD_AND_ASSIGN_CSP_ROLES,
|
|
||||||
Permissions.REMOVE_CSP_ROLES,
|
|
||||||
Permissions.REQUEST_NEW_CSP_ROLE,
|
|
||||||
Permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE,
|
|
||||||
|
|
||||||
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
|
||||||
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
|
||||||
|
|
||||||
Permissions.DEACTIVATE_WORKSPACE,
|
|
||||||
Permissions.VIEW_ATAT_PERMISSIONS,
|
|
||||||
|
|
||||||
Permissions.ADD_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.DELETE_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.DEACTIVATE_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.RENAME_APPLICATION_IN_WORKSPACE,
|
|
||||||
|
|
||||||
Permissions.ADD_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.DELETE_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.DEACTIVATE_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.RENAME_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
]
|
|
||||||
),
|
|
||||||
Role(
|
|
||||||
name='admin',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.VIEW_USAGE_REPORT,
|
|
||||||
Permissions.ADD_AND_ASSIGN_CSP_ROLES,
|
|
||||||
Permissions.REMOVE_CSP_ROLES,
|
|
||||||
Permissions.REQUEST_NEW_CSP_ROLE,
|
|
||||||
Permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE,
|
|
||||||
|
|
||||||
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
|
||||||
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
|
||||||
|
|
||||||
Permissions.ADD_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.DELETE_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.DEACTIVATE_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.RENAME_APPLICATION_IN_WORKSPACE,
|
|
||||||
|
|
||||||
Permissions.ADD_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.DELETE_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.DEACTIVATE_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
Permissions.RENAME_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
]
|
|
||||||
),
|
|
||||||
Role(
|
|
||||||
name='developer',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.VIEW_USAGE_REPORT,
|
|
||||||
Permissions.VIEW_USAGE_DOLLARS,
|
|
||||||
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
|
||||||
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION
|
|
||||||
]
|
|
||||||
),
|
|
||||||
Role(
|
|
||||||
name='billing_auditor',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.VIEW_USAGE_REPORT,
|
|
||||||
Permissions.VIEW_USAGE_DOLLARS,
|
|
||||||
|
|
||||||
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
|
||||||
|
|
||||||
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
]
|
|
||||||
),
|
|
||||||
Role(
|
|
||||||
name='security_auditor',
|
|
||||||
description='',
|
|
||||||
permissions=[
|
|
||||||
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
|
||||||
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
|
||||||
|
|
||||||
Permissions.VIEW_ATAT_PERMISSIONS,
|
|
||||||
|
|
||||||
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
|
||||||
|
|
||||||
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
|
||||||
]
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
session.add_all(roles)
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
pass
|
|
@ -1,30 +0,0 @@
|
|||||||
"""workspace timestamps
|
|
||||||
|
|
||||||
Revision ID: a2b499a1dd62
|
|
||||||
Revises: f549c7cee17c
|
|
||||||
Create Date: 2018-08-17 10:43:13.165829
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'a2b499a1dd62'
|
|
||||||
down_revision = 'f549c7cee17c'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('workspaces', sa.Column('time_created', sa.TIMESTAMP(timezone=True), server_default=sa.text('now()'), nullable=False))
|
|
||||||
op.add_column('workspaces', sa.Column('time_updated', sa.TIMESTAMP(timezone=True), server_default=sa.text('now()'), nullable=False))
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('workspaces', 'time_updated')
|
|
||||||
op.drop_column('workspaces', 'time_created')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,28 +0,0 @@
|
|||||||
"""add name to request revision
|
|
||||||
|
|
||||||
Revision ID: a496111da617
|
|
||||||
Revises: 4f4defb7b440
|
|
||||||
Create Date: 2018-09-18 16:45:59.297289
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'a496111da617'
|
|
||||||
down_revision = '4f4defb7b440'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('request_revisions', sa.Column('name', sa.String(), nullable=True))
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_column('request_revisions', 'name')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,28 +0,0 @@
|
|||||||
"""add sequence to request revision
|
|
||||||
|
|
||||||
Revision ID: a903ebe91ad5
|
|
||||||
Revises: 04fe150da553
|
|
||||||
Create Date: 2018-08-30 13:45:35.561657
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'a903ebe91ad5'
|
|
||||||
down_revision = '04fe150da553'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
db = op.get_bind()
|
|
||||||
op.add_column('request_revisions', sa.Column('sequence', sa.BigInteger(), nullable=False))
|
|
||||||
db.execute("CREATE SEQUENCE request_revisions_sequence_seq OWNED BY request_revisions.sequence;")
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
op.drop_column('request_revisions', 'sequence')
|
|
@ -1,53 +0,0 @@
|
|||||||
"""add view_workspace_members_permission
|
|
||||||
|
|
||||||
Revision ID: ad30159ef19b
|
|
||||||
Revises: 2c2a2af465d3
|
|
||||||
Create Date: 2018-09-05 11:17:17.204089
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
from sqlalchemy.orm.session import Session
|
|
||||||
|
|
||||||
from atst.models.role import Role
|
|
||||||
from atst.models.permissions import Permissions
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'ad30159ef19b'
|
|
||||||
down_revision = 'c1d074288e99'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
|
|
||||||
all_roles_but_default = session.query(Role).filter(Role.name != "default").all()
|
|
||||||
for role in all_roles_but_default:
|
|
||||||
role.add_permission(Permissions.VIEW_WORKSPACE)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
owner_and_ccpo = session.query(Role).filter(Role.name.in_(["owner", "ccpo", "admin"])).all()
|
|
||||||
for role in owner_and_ccpo:
|
|
||||||
role.add_permission(Permissions.VIEW_WORKSPACE_MEMBERS)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
session.flush()
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
|
|
||||||
all_roles_but_default = session.query(Role).filter(Role.name != "default").all()
|
|
||||||
for role in all_roles_but_default:
|
|
||||||
role.remove_permission(Permissions.VIEW_WORKSPACE)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
owner_and_ccpo = session.query(Role).filter(Role.name.in_(["owner", "ccpo"])).all()
|
|
||||||
for role in owner_and_ccpo:
|
|
||||||
role.remove_permission(Permissions.VIEW_WORKSPACE_MEMBERS)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
session.flush()
|
|
||||||
session.commit()
|
|
@ -1,47 +0,0 @@
|
|||||||
"""requests
|
|
||||||
|
|
||||||
Revision ID: b5b17d465166
|
|
||||||
Revises: ff1c9c02fa61
|
|
||||||
Create Date: 2018-07-23 14:58:05.044456
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'b5b17d465166'
|
|
||||||
down_revision = 'ff1c9c02fa61'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('requests',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('creator', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.Column('time_created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
|
||||||
sa.Column('body', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.create_table('request_status_events',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('new_status', sa.String(), nullable=True),
|
|
||||||
sa.Column('time_created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
|
||||||
sa.Column('request_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.Column('sequence', sa.BigInteger(), nullable=False),
|
|
||||||
sa.ForeignKeyConstraint(['request_id'], ['requests.id'], ondelete='CASCADE'),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
db = op.get_bind()
|
|
||||||
db.execute("CREATE SEQUENCE request_status_events_sequence_seq OWNED BY request_status_events.sequence;")
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_table('request_status_events')
|
|
||||||
op.drop_table('requests')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,38 +0,0 @@
|
|||||||
"""create environment_roles table
|
|
||||||
|
|
||||||
Revision ID: c1d074288e99
|
|
||||||
Revises: 06aa23166ca9
|
|
||||||
Create Date: 2018-09-06 13:40:12.332241
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'c1d074288e99'
|
|
||||||
down_revision = '06aa23166ca9'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('environment_roles',
|
|
||||||
sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False),
|
|
||||||
sa.Column('environment_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.Column('role', sa.String(), nullable=True),
|
|
||||||
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['environment_id'], ['environments.id'], ),
|
|
||||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.create_index('environments_role_user_environment', 'environment_roles', ['user_id', 'environment_id'], unique=True)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_index('environments_role_user_environment', table_name='environment_roles')
|
|
||||||
op.drop_table('environment_roles')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,36 +0,0 @@
|
|||||||
"""add attachment table
|
|
||||||
|
|
||||||
Revision ID: d7db8fd35b41
|
|
||||||
Revises: 0845b2f0f401
|
|
||||||
Create Date: 2018-08-24 11:27:15.317181
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'd7db8fd35b41'
|
|
||||||
down_revision = '0845b2f0f401'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('attachments',
|
|
||||||
sa.Column('id', sa.Integer(), nullable=False),
|
|
||||||
sa.Column('filename', sa.String(), nullable=True),
|
|
||||||
sa.Column('object_name', sa.String(), nullable=True),
|
|
||||||
sa.PrimaryKeyConstraint('id'),
|
|
||||||
sa.UniqueConstraint('object_name')
|
|
||||||
)
|
|
||||||
op.create_unique_constraint(None, 'task_order', ['number'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint(None, 'task_order', type_='unique')
|
|
||||||
op.drop_table('attachments')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,49 +0,0 @@
|
|||||||
"""remove view project and environment permissions
|
|
||||||
|
|
||||||
Revision ID: dea6b8e09d63
|
|
||||||
Revises: ad30159ef19b
|
|
||||||
Create Date: 2018-09-10 11:06:00.017222
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
from sqlalchemy.orm.session import Session
|
|
||||||
|
|
||||||
from atst.models.role import Role
|
|
||||||
from atst.models.permissions import Permissions
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = "dea6b8e09d63"
|
|
||||||
down_revision = "53ab3edd334b"
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
|
|
||||||
priveleged_role_names = ("owner", "admin", "ccpo")
|
|
||||||
non_priveleged_roles = (
|
|
||||||
session.query(Role).filter(Role.name.notin_(priveleged_role_names)).all()
|
|
||||||
)
|
|
||||||
for role in non_priveleged_roles:
|
|
||||||
role.remove_permission(Permissions.VIEW_APPLICATION_IN_WORKSPACE)
|
|
||||||
role.remove_permission(Permissions.VIEW_ENVIRONMENT_IN_APPLICATION)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
session = Session(bind=op.get_bind())
|
|
||||||
|
|
||||||
priveleged_role_names = ("owner", "admin", "ccpo")
|
|
||||||
non_priveleged_roles = (
|
|
||||||
session.query(Role).filter(not Role.name.in_(priveleged_role_names)).all()
|
|
||||||
)
|
|
||||||
for role in non_priveleged_roles:
|
|
||||||
role.add_permission(Permissions.VIEW_APPLICATION_IN_WORKSPACE)
|
|
||||||
role.add_permission(Permissions.VIEW_ENVIRONMENT_IN_APPLICATION)
|
|
||||||
session.add(role)
|
|
||||||
|
|
||||||
session.commit()
|
|
@ -1,42 +0,0 @@
|
|||||||
"""add relationship between revision and status event
|
|
||||||
|
|
||||||
Revision ID: e66a49285f23
|
|
||||||
Revises: 090e1bd0d7ce
|
|
||||||
Create Date: 2018-09-04 14:01:31.548665
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
from atst.models.request import Request
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'e66a49285f23'
|
|
||||||
down_revision = '090e1bd0d7ce'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
from uuid import UUID
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
op.add_column('request_status_events', sa.Column('request_revision_id', postgresql.UUID(as_uuid=True)))
|
|
||||||
op.create_foreign_key(None, 'request_status_events', 'request_revisions', ['request_revision_id'], ['id'])
|
|
||||||
|
|
||||||
Session = sessionmaker(bind=op.get_bind())
|
|
||||||
session = Session()
|
|
||||||
for request in session.query(Request).all():
|
|
||||||
for status in request.status_events:
|
|
||||||
status.revision = request.latest_revision
|
|
||||||
session.add(status)
|
|
||||||
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint(None, 'request_status_events', type_='foreignkey')
|
|
||||||
op.drop_column('request_status_events', 'request_revision_id')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,47 +0,0 @@
|
|||||||
"""projects and environments
|
|
||||||
|
|
||||||
Revision ID: f064247f2988
|
|
||||||
Revises: a2b499a1dd62
|
|
||||||
Create Date: 2018-08-17 11:30:53.684954
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy.dialects import postgresql
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'f064247f2988'
|
|
||||||
down_revision = 'a2b499a1dd62'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_table('projects',
|
|
||||||
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('name', sa.String(), nullable=False),
|
|
||||||
sa.Column('description', sa.String(), nullable=False),
|
|
||||||
sa.Column('workspace_id', postgresql.UUID(as_uuid=True), nullable=False),
|
|
||||||
sa.ForeignKeyConstraint(['workspace_id'], ['workspaces.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
op.create_table('environments',
|
|
||||||
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('name', sa.String(), nullable=False),
|
|
||||||
sa.Column('project_id', postgresql.UUID(as_uuid=True), nullable=True),
|
|
||||||
sa.ForeignKeyConstraint(['project_id'], ['projects.id'], ),
|
|
||||||
sa.PrimaryKeyConstraint('id')
|
|
||||||
)
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_table('environments')
|
|
||||||
op.drop_table('projects')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,28 +0,0 @@
|
|||||||
"""add workspace_role workspace_id fk
|
|
||||||
|
|
||||||
Revision ID: f36f130622b9
|
|
||||||
Revises: f064247f2988
|
|
||||||
Create Date: 2018-08-20 10:36:23.920881
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'f36f130622b9'
|
|
||||||
down_revision = 'f064247f2988'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.create_foreign_key('workspace_role_workspace_id_fk', 'workspace_role', 'workspaces', ['workspace_id'], ['id'])
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint('workspace_role_workspace_id_fk', 'workspace_role', type_='foreignkey')
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,30 +0,0 @@
|
|||||||
"""remove workspaces task order association
|
|
||||||
|
|
||||||
Revision ID: f549c7cee17c
|
|
||||||
Revises: 4be312655ceb
|
|
||||||
Create Date: 2018-08-16 16:42:48.581510
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'f549c7cee17c'
|
|
||||||
down_revision = '4be312655ceb'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.drop_constraint('workspaces_task_order_id_fkey', 'workspaces', type_='foreignkey')
|
|
||||||
op.drop_column('workspaces', 'task_order_id')
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
op.add_column('workspaces', sa.Column('task_order_id', sa.INTEGER(), autoincrement=False))
|
|
||||||
op.create_foreign_key('workspaces_task_order_id_fkey', 'workspaces', 'task_order', ['task_order_id'], ['id'])
|
|
||||||
# ### end Alembic commands ###
|
|
@ -1,26 +0,0 @@
|
|||||||
"""enable uuid extension
|
|
||||||
|
|
||||||
Revision ID: ff1c9c02fa61
|
|
||||||
Revises:
|
|
||||||
Create Date: 2018-07-23 14:54:05.422286
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'ff1c9c02fa61'
|
|
||||||
down_revision = None
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
connection = op.get_bind()
|
|
||||||
connection.execute('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"')
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
connection = op.get_bind()
|
|
||||||
connection.execute('DROP EXTENSION IF EXISTS "uuid-ossp"')
|
|
@ -1,13 +1,13 @@
|
|||||||
from sqlalchemy import Column, BigInteger, String, ForeignKey
|
from sqlalchemy import Column, String, ForeignKey
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models import Base, types
|
||||||
|
|
||||||
|
|
||||||
class RequestInternalComment(Base):
|
class RequestInternalComment(Base):
|
||||||
__tablename__ = "request_internal_comments"
|
__tablename__ = "request_internal_comments"
|
||||||
|
|
||||||
id = Column(BigInteger, primary_key=True)
|
id = types.Id()
|
||||||
text = Column(String())
|
text = Column(String())
|
||||||
|
|
||||||
user_id = Column(ForeignKey("users.id"), nullable=False)
|
user_id = Column(ForeignKey("users.id"), nullable=False)
|
||||||
|
@ -26,7 +26,7 @@ class RequestStatusEvent(Base):
|
|||||||
__tablename__ = "request_status_events"
|
__tablename__ = "request_status_events"
|
||||||
|
|
||||||
id = Id()
|
id = Id()
|
||||||
new_status = Column(SQLAEnum(RequestStatus))
|
new_status = Column(SQLAEnum(RequestStatus, native_enum=False))
|
||||||
time_created = Column(DateTime(timezone=True), server_default=func.now())
|
time_created = Column(DateTime(timezone=True), server_default=func.now())
|
||||||
request_id = Column(
|
request_id = Column(
|
||||||
UUID(as_uuid=True), ForeignKey("requests.id", ondelete="CASCADE")
|
UUID(as_uuid=True), ForeignKey("requests.id", ondelete="CASCADE")
|
||||||
|
@ -23,8 +23,8 @@ class TaskOrder(Base):
|
|||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
number = Column(String, unique=True)
|
number = Column(String, unique=True)
|
||||||
source = Column(SQLAEnum(Source))
|
source = Column(SQLAEnum(Source, native_enum=False))
|
||||||
funding_type = Column(SQLAEnum(FundingType))
|
funding_type = Column(SQLAEnum(FundingType, native_enum=False))
|
||||||
funding_type_other = Column(String)
|
funding_type_other = Column(String)
|
||||||
clin_0001 = Column(Integer)
|
clin_0001 = Column(Integer)
|
||||||
clin_0003 = Column(Integer)
|
clin_0003 = Column(Integer)
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit c55d1eb5db0255784e46aec1006e4419465ef945
|
Subproject commit b44abd6d01aa7dbb4611d8ab0b3b0a358b031900
|
@ -16,11 +16,6 @@ def get_pe_numbers(url):
|
|||||||
t = response.read().decode("utf-8")
|
t = response.read().decode("utf-8")
|
||||||
return list(csv.reader(t.split("\r\n")))
|
return list(csv.reader(t.split("\r\n")))
|
||||||
|
|
||||||
def make_pe_number_repo(config):
|
|
||||||
deps = make_deps(config)
|
|
||||||
db = deps["db_session"]
|
|
||||||
return PENumbers(db)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
config = make_config()
|
config = make_config()
|
||||||
url = config['PE_NUMBER_CSV_URL']
|
url = config['PE_NUMBER_CSV_URL']
|
||||||
|
165
script/seed_roles.py
Normal file
165
script/seed_roles.py
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
# Add root project dir to the python path
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
||||||
|
sys.path.append(parent_dir)
|
||||||
|
|
||||||
|
from sqlalchemy.orm.exc import NoResultFound
|
||||||
|
from atst.app import make_config, make_app
|
||||||
|
from atst.database import db
|
||||||
|
from atst.models import Role, Permissions
|
||||||
|
|
||||||
|
roles = [
|
||||||
|
Role(
|
||||||
|
name="ccpo",
|
||||||
|
description="",
|
||||||
|
permissions=[
|
||||||
|
Permissions.VIEW_ORIGINAL_JEDI_REQEUST,
|
||||||
|
Permissions.REVIEW_AND_APPROVE_JEDI_WORKSPACE_REQUEST,
|
||||||
|
Permissions.MODIFY_ATAT_ROLE_PERMISSIONS,
|
||||||
|
Permissions.CREATE_CSP_ROLE,
|
||||||
|
Permissions.DELETE_CSP_ROLE,
|
||||||
|
Permissions.DEACTIVE_CSP_ROLE,
|
||||||
|
Permissions.MODIFY_CSP_ROLE_PERMISSIONS,
|
||||||
|
Permissions.VIEW_USAGE_REPORT,
|
||||||
|
Permissions.VIEW_USAGE_DOLLARS,
|
||||||
|
Permissions.ADD_AND_ASSIGN_CSP_ROLES,
|
||||||
|
Permissions.REMOVE_CSP_ROLES,
|
||||||
|
Permissions.REQUEST_NEW_CSP_ROLE,
|
||||||
|
Permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE,
|
||||||
|
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.DEACTIVATE_WORKSPACE,
|
||||||
|
Permissions.VIEW_ATAT_PERMISSIONS,
|
||||||
|
Permissions.TRANSFER_OWNERSHIP_OF_WORKSPACE,
|
||||||
|
Permissions.VIEW_WORKSPACE,
|
||||||
|
Permissions.VIEW_WORKSPACE_MEMBERS,
|
||||||
|
Permissions.ADD_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.DELETE_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.DEACTIVATE_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.RENAME_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.ADD_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.DELETE_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.DEACTIVATE_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.RENAME_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.ADD_TAG_TO_WORKSPACE,
|
||||||
|
Permissions.REMOVE_TAG_FROM_WORKSPACE,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Role(
|
||||||
|
name="owner",
|
||||||
|
description="",
|
||||||
|
permissions=[
|
||||||
|
Permissions.REQUEST_JEDI_WORKSPACE,
|
||||||
|
Permissions.VIEW_ORIGINAL_JEDI_REQEUST,
|
||||||
|
Permissions.VIEW_USAGE_REPORT,
|
||||||
|
Permissions.VIEW_USAGE_DOLLARS,
|
||||||
|
Permissions.ADD_AND_ASSIGN_CSP_ROLES,
|
||||||
|
Permissions.REMOVE_CSP_ROLES,
|
||||||
|
Permissions.REQUEST_NEW_CSP_ROLE,
|
||||||
|
Permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE,
|
||||||
|
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.DEACTIVATE_WORKSPACE,
|
||||||
|
Permissions.VIEW_ATAT_PERMISSIONS,
|
||||||
|
Permissions.VIEW_WORKSPACE,
|
||||||
|
Permissions.VIEW_WORKSPACE_MEMBERS,
|
||||||
|
Permissions.EDIT_WORKSPACE_INFORMATION,
|
||||||
|
Permissions.ADD_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.DELETE_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.DEACTIVATE_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.RENAME_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.ADD_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.DELETE_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.DEACTIVATE_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.RENAME_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Role(
|
||||||
|
name="admin",
|
||||||
|
description="",
|
||||||
|
permissions=[
|
||||||
|
Permissions.VIEW_USAGE_REPORT,
|
||||||
|
Permissions.ADD_AND_ASSIGN_CSP_ROLES,
|
||||||
|
Permissions.REMOVE_CSP_ROLES,
|
||||||
|
Permissions.REQUEST_NEW_CSP_ROLE,
|
||||||
|
Permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE,
|
||||||
|
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.VIEW_WORKSPACE,
|
||||||
|
Permissions.VIEW_WORKSPACE_MEMBERS,
|
||||||
|
Permissions.EDIT_WORKSPACE_INFORMATION,
|
||||||
|
Permissions.ADD_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.DELETE_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.DEACTIVATE_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.RENAME_APPLICATION_IN_WORKSPACE,
|
||||||
|
Permissions.ADD_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.DELETE_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.DEACTIVATE_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.VIEW_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
Permissions.RENAME_ENVIRONMENT_IN_APPLICATION,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Role(
|
||||||
|
name="developer",
|
||||||
|
description="",
|
||||||
|
permissions=[
|
||||||
|
Permissions.VIEW_USAGE_REPORT,
|
||||||
|
Permissions.VIEW_USAGE_DOLLARS,
|
||||||
|
Permissions.VIEW_WORKSPACE,
|
||||||
|
Permissions.VIEW_APPLICATION_IN_WORKSPACE
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Role(
|
||||||
|
name="billing_auditor",
|
||||||
|
description="",
|
||||||
|
permissions=[
|
||||||
|
Permissions.VIEW_USAGE_REPORT,
|
||||||
|
Permissions.VIEW_USAGE_DOLLARS,
|
||||||
|
Permissions.VIEW_WORKSPACE,
|
||||||
|
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Role(
|
||||||
|
name="security_auditor",
|
||||||
|
description="",
|
||||||
|
permissions=[
|
||||||
|
Permissions.VIEW_ASSIGNED_ATAT_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.VIEW_ASSIGNED_CSP_ROLE_CONFIGURATIONS,
|
||||||
|
Permissions.VIEW_ATAT_PERMISSIONS,
|
||||||
|
Permissions.VIEW_WORKSPACE,
|
||||||
|
Permissions.VIEW_APPLICATION_IN_WORKSPACE,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Role(
|
||||||
|
name="default", description="", permissions=[Permissions.REQUEST_JEDI_WORKSPACE]
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def seed_roles():
|
||||||
|
for role in roles:
|
||||||
|
try:
|
||||||
|
existing_role = db.session.query(Role).filter_by(name=role.name).one()
|
||||||
|
existing_role.description = role.description
|
||||||
|
existing_role.permissions = role.permissions
|
||||||
|
db.session.add(existing_role)
|
||||||
|
print("Updated existing role {}".format(existing_role.name))
|
||||||
|
except NoResultFound:
|
||||||
|
db.session.add(role)
|
||||||
|
print("Added new role {}".format(role.name))
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
config = make_config()
|
||||||
|
app = make_app(config)
|
||||||
|
with app.app_context():
|
||||||
|
seed_roles()
|
Loading…
x
Reference in New Issue
Block a user