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 atst.models import Base
|
||||
from atst.models import Base, types
|
||||
|
||||
|
||||
class RequestInternalComment(Base):
|
||||
__tablename__ = "request_internal_comments"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = types.Id()
|
||||
text = Column(String())
|
||||
|
||||
user_id = Column(ForeignKey("users.id"), nullable=False)
|
||||
|
@ -26,7 +26,7 @@ class RequestStatusEvent(Base):
|
||||
__tablename__ = "request_status_events"
|
||||
|
||||
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())
|
||||
request_id = Column(
|
||||
UUID(as_uuid=True), ForeignKey("requests.id", ondelete="CASCADE")
|
||||
|
@ -23,8 +23,8 @@ class TaskOrder(Base):
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
number = Column(String, unique=True)
|
||||
source = Column(SQLAEnum(Source))
|
||||
funding_type = Column(SQLAEnum(FundingType))
|
||||
source = Column(SQLAEnum(Source, native_enum=False))
|
||||
funding_type = Column(SQLAEnum(FundingType, native_enum=False))
|
||||
funding_type_other = Column(String)
|
||||
clin_0001 = 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")
|
||||
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__":
|
||||
config = make_config()
|
||||
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