fix seed scripts
This commit is contained in:
parent
372dac306f
commit
79613fbe40
@ -1,4 +1,4 @@
|
|||||||
# Add root project dir to the python path
|
# Add root application dir to the python path
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@ -15,14 +15,14 @@ from atst.app import make_config, make_app
|
|||||||
from atst.models.audit_event import AuditEvent
|
from atst.models.audit_event import AuditEvent
|
||||||
from atst.models.environment import Environment
|
from atst.models.environment import Environment
|
||||||
from atst.models.environment_role import EnvironmentRole
|
from atst.models.environment_role import EnvironmentRole
|
||||||
from atst.models.project import Project
|
from atst.models.application import Application
|
||||||
from atst.models.request import Request
|
from atst.models.request import Request
|
||||||
from atst.models.request_revision import RequestRevision
|
from atst.models.request_revision import RequestRevision
|
||||||
from atst.models.request_status_event import RequestStatus, RequestStatusEvent
|
from atst.models.request_status_event import RequestStatus, RequestStatusEvent
|
||||||
from atst.models.role import Role
|
from atst.models.role import Role
|
||||||
from atst.models.user import User
|
from atst.models.user import User
|
||||||
from atst.models.workspace_role import WorkspaceRole
|
from atst.models.portfolio_role import PortfolioRole
|
||||||
from atst.models.workspace import Workspace
|
from atst.models.portfolio import Portfolio
|
||||||
from atst.models.mixins import AuditableMixin
|
from atst.models.mixins import AuditableMixin
|
||||||
|
|
||||||
from atst.domain.environments import Environments
|
from atst.domain.environments import Environments
|
||||||
@ -30,7 +30,7 @@ from atst.domain.exceptions import NotFoundError
|
|||||||
from atst.domain.csp.reports import MockReportingProvider
|
from atst.domain.csp.reports import MockReportingProvider
|
||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
from atst.domain.users import Users
|
from atst.domain.users import Users
|
||||||
from atst.domain.workspaces import Workspaces
|
from atst.domain.portfolios import portfolios
|
||||||
from tests.factories import RequestFactory, LegacyTaskOrderFactory
|
from tests.factories import RequestFactory, LegacyTaskOrderFactory
|
||||||
|
|
||||||
|
|
||||||
@ -48,29 +48,29 @@ dod_ids = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def create_demo_workspace(name, data):
|
def create_demo_portfolio(name, data):
|
||||||
try:
|
try:
|
||||||
workspace_owner = Users.get_by_dod_id("678678678") # Other
|
portfolio_owner = Users.get_by_dod_id("678678678") # Other
|
||||||
auditor = Users.get_by_dod_id("3453453453") # Sally
|
auditor = Users.get_by_dod_id("3453453453") # Sally
|
||||||
except NotFoundError:
|
except NotFoundError:
|
||||||
print("Could not find demo users; will not create demo workspace {}".format(name))
|
print("Could not find demo users; will not create demo portfolio {}".format(name))
|
||||||
return
|
return
|
||||||
|
|
||||||
request = RequestFactory.build(creator=workspace_owner)
|
request = RequestFactory.build(creator=portfolio_owner)
|
||||||
request.legacy_task_order = LegacyTaskOrderFactory.build()
|
request.legacy_task_order = LegacyTaskOrderFactory.build()
|
||||||
request = Requests.update(
|
request = Requests.update(
|
||||||
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
||||||
)
|
)
|
||||||
approved_request = Requests.set_status(request, RequestStatus.APPROVED)
|
approved_request = Requests.set_status(request, RequestStatus.APPROVED)
|
||||||
|
|
||||||
workspace = Requests.approve_and_create_workspace(request)
|
portfolio = Requests.approve_and_create_portfolio(request)
|
||||||
Workspaces.update(workspace, { "name": name })
|
portfolios.update(portfolio, { "name": name })
|
||||||
|
|
||||||
for mock_project in data["projects"]:
|
for mock_application in data["applications"]:
|
||||||
project = Project(workspace=workspace, name=mock_project.name, description='')
|
application = application(portfolio=portfolio, name=mock_application.name, description='')
|
||||||
env_names = [env.name for env in mock_project.environments]
|
env_names = [env.name for env in mock_application.environments]
|
||||||
envs = Environments.create_many(project, env_names)
|
envs = Environments.create_many(application, env_names)
|
||||||
db.session.add(project)
|
db.session.add(application)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
@ -103,18 +103,18 @@ def remove_sample_data(all_users=False):
|
|||||||
)
|
)
|
||||||
events = [ev for r in requests for ev in r.status_events]
|
events = [ev for r in requests for ev in r.status_events]
|
||||||
revisions = [rev for r in requests for rev in r.revisions]
|
revisions = [rev for r in requests for rev in r.revisions]
|
||||||
workspaces = [r.workspace for r in requests if r.workspace]
|
portfolios = [r.portfolio for r in requests if r.portfolio]
|
||||||
ws_audit = (
|
ws_audit = (
|
||||||
db.session.query(AuditEvent)
|
db.session.query(AuditEvent)
|
||||||
.filter(AuditEvent.workspace_id.in_([w.id for w in workspaces]))
|
.filter(AuditEvent.portfolio_id.in_([w.id for w in portfolios]))
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
workspace_roles = [role for workspace in workspaces for role in workspace.roles]
|
portfolio_roles = [role for portfolio in portfolios for role in portfolio.roles]
|
||||||
invites = [invite for role in workspace_roles for invite in role.invitations]
|
invites = [invite for role in portfolio_roles for invite in role.invitations]
|
||||||
projects = [p for workspace in workspaces for p in workspace.projects]
|
applications = [p for portfolio in portfolios for p in portfolio.applications]
|
||||||
environments = (
|
environments = (
|
||||||
db.session.query(Environment)
|
db.session.query(Environment)
|
||||||
.filter(Environment.project_id.in_([p.id for p in projects]))
|
.filter(Environment.application_id.in_([p.id for p in applications]))
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
roles = [role for env in environments for role in env.roles]
|
roles = [role for env in environments for role in env.roles]
|
||||||
@ -122,9 +122,9 @@ def remove_sample_data(all_users=False):
|
|||||||
for set_of_things in [
|
for set_of_things in [
|
||||||
roles,
|
roles,
|
||||||
environments,
|
environments,
|
||||||
projects,
|
applications,
|
||||||
invites,
|
invites,
|
||||||
workspace_roles,
|
portfolio_roles,
|
||||||
ws_audit,
|
ws_audit,
|
||||||
events,
|
events,
|
||||||
revisions,
|
revisions,
|
||||||
@ -135,9 +135,9 @@ def remove_sample_data(all_users=False):
|
|||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
query = "DELETE FROM workspaces WHERE workspaces.id = ANY(:ids);"
|
query = "DELETE FROM portfolios WHERE portfolios.id = ANY(:ids);"
|
||||||
db.session.connection().execute(
|
db.session.connection().execute(
|
||||||
sqlalchemy.text(query), ids=[w.id for w in workspaces]
|
sqlalchemy.text(query), ids=[w.id for w in portfolios]
|
||||||
)
|
)
|
||||||
|
|
||||||
query = "DELETE FROM requests WHERE requests.id = ANY(:ids);"
|
query = "DELETE FROM requests WHERE requests.id = ANY(:ids);"
|
||||||
@ -153,5 +153,5 @@ if __name__ == "__main__":
|
|||||||
app = make_app(config)
|
app = make_app(config)
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
remove_sample_data()
|
remove_sample_data()
|
||||||
create_demo_workspace('Aardvark', MockReportingProvider.REPORT_FIXTURE_MAP["Aardvark"])
|
create_demo_portfolio('Aardvark', MockReportingProvider.REPORT_FIXTURE_MAP["Aardvark"])
|
||||||
create_demo_workspace('Beluga', MockReportingProvider.REPORT_FIXTURE_MAP["Beluga"])
|
create_demo_portfolio('Beluga', MockReportingProvider.REPORT_FIXTURE_MAP["Beluga"])
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Add root project dir to the python path
|
# Add root application dir to the python path
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@ -9,44 +9,44 @@ from atst.database import db
|
|||||||
from atst.app import make_config, make_app
|
from atst.app import make_config, make_app
|
||||||
from atst.domain.users import Users
|
from atst.domain.users import Users
|
||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
from atst.domain.workspaces import Workspaces
|
from atst.domain.portfolios import Portfolios
|
||||||
from atst.domain.applications import Applications
|
from atst.domain.applications import Applications
|
||||||
from atst.domain.workspace_roles import WorkspaceRoles
|
from atst.domain.portfolio_roles import PortfolioRoles
|
||||||
from atst.models.invitation import Status as InvitationStatus
|
from atst.models.invitation import Status as InvitationStatus
|
||||||
from atst.domain.exceptions import AlreadyExistsError
|
from atst.domain.exceptions import AlreadyExistsError
|
||||||
from tests.factories import RequestFactory, LegacyTaskOrderFactory, InvitationFactory
|
from tests.factories import RequestFactory, LegacyTaskOrderFactory, InvitationFactory
|
||||||
from atst.routes.dev import _DEV_USERS as DEV_USERS
|
from atst.routes.dev import _DEV_USERS as DEV_USERS
|
||||||
|
|
||||||
WORKSPACE_USERS = [
|
portfolio_USERS = [
|
||||||
{
|
{
|
||||||
"first_name": "Danny",
|
"first_name": "Danny",
|
||||||
"last_name": "Knight",
|
"last_name": "Knight",
|
||||||
"email": "knight@mil.gov",
|
"email": "knight@mil.gov",
|
||||||
"workspace_role": "developer",
|
"portfolio_role": "developer",
|
||||||
"dod_id": "0000000001",
|
"dod_id": "0000000001",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"first_name": "Mario",
|
"first_name": "Mario",
|
||||||
"last_name": "Hudson",
|
"last_name": "Hudson",
|
||||||
"email": "hudson@mil.gov",
|
"email": "hudson@mil.gov",
|
||||||
"workspace_role": "billing_auditor",
|
"portfolio_role": "billing_auditor",
|
||||||
"dod_id": "0000000002",
|
"dod_id": "0000000002",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"first_name": "Louise",
|
"first_name": "Louise",
|
||||||
"last_name": "Greer",
|
"last_name": "Greer",
|
||||||
"email": "greer@mil.gov",
|
"email": "greer@mil.gov",
|
||||||
"workspace_role": "admin",
|
"portfolio_role": "admin",
|
||||||
"dod_id": "0000000003",
|
"dod_id": "0000000003",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
WORKSPACE_INVITED_USERS = [
|
portfolio_INVITED_USERS = [
|
||||||
{
|
{
|
||||||
"first_name": "Frederick",
|
"first_name": "Frederick",
|
||||||
"last_name": "Fitzgerald",
|
"last_name": "Fitzgerald",
|
||||||
"email": "frederick@mil.gov",
|
"email": "frederick@mil.gov",
|
||||||
"workspace_role": "developer",
|
"portfolio_role": "developer",
|
||||||
"dod_id": "0000000004",
|
"dod_id": "0000000004",
|
||||||
"status": InvitationStatus.REJECTED_WRONG_USER
|
"status": InvitationStatus.REJECTED_WRONG_USER
|
||||||
},
|
},
|
||||||
@ -54,7 +54,7 @@ WORKSPACE_INVITED_USERS = [
|
|||||||
"first_name": "Gina",
|
"first_name": "Gina",
|
||||||
"last_name": "Guzman",
|
"last_name": "Guzman",
|
||||||
"email": "gina@mil.gov",
|
"email": "gina@mil.gov",
|
||||||
"workspace_role": "developer",
|
"portfolio_role": "developer",
|
||||||
"dod_id": "0000000005",
|
"dod_id": "0000000005",
|
||||||
"status": InvitationStatus.REJECTED_EXPIRED
|
"status": InvitationStatus.REJECTED_EXPIRED
|
||||||
},
|
},
|
||||||
@ -62,7 +62,7 @@ WORKSPACE_INVITED_USERS = [
|
|||||||
"first_name": "Hector",
|
"first_name": "Hector",
|
||||||
"last_name": "Harper",
|
"last_name": "Harper",
|
||||||
"email": "hector@mil.gov",
|
"email": "hector@mil.gov",
|
||||||
"workspace_role": "developer",
|
"portfolio_role": "developer",
|
||||||
"dod_id": "0000000006",
|
"dod_id": "0000000006",
|
||||||
"status": InvitationStatus.REVOKED
|
"status": InvitationStatus.REVOKED
|
||||||
},
|
},
|
||||||
@ -70,7 +70,7 @@ WORKSPACE_INVITED_USERS = [
|
|||||||
"first_name": "Isabella",
|
"first_name": "Isabella",
|
||||||
"last_name": "Ingram",
|
"last_name": "Ingram",
|
||||||
"email": "isabella@mil.gov",
|
"email": "isabella@mil.gov",
|
||||||
"workspace_role": "developer",
|
"portfolio_role": "developer",
|
||||||
"dod_id": "0000000007",
|
"dod_id": "0000000007",
|
||||||
"status": InvitationStatus.PENDING
|
"status": InvitationStatus.PENDING
|
||||||
},
|
},
|
||||||
@ -107,26 +107,26 @@ def seed_db():
|
|||||||
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
||||||
)
|
)
|
||||||
|
|
||||||
workspace = Workspaces.create(
|
portfolio = Portfolios.create(
|
||||||
user, name="{}'s workspace".format(user.first_name)
|
user, name="{}'s portfolio".format(user.first_name)
|
||||||
)
|
)
|
||||||
for workspace_role in WORKSPACE_USERS:
|
for portfolio_role in portfolio_USERS:
|
||||||
ws_role = Workspaces.create_member(user, workspace, workspace_role)
|
ws_role = Portfolios.create_member(user, portfolio, portfolio_role)
|
||||||
db.session.refresh(ws_role)
|
db.session.refresh(ws_role)
|
||||||
WorkspaceRoles.enable(ws_role)
|
PortfolioRoles.enable(ws_role)
|
||||||
|
|
||||||
for workspace_role in WORKSPACE_INVITED_USERS:
|
for portfolio_role in portfolio_INVITED_USERS:
|
||||||
ws_role = Workspaces.create_member(user, workspace, workspace_role)
|
ws_role = Portfolios.create_member(user, portfolio, portfolio_role)
|
||||||
invitation = InvitationFactory.build(workspace_role=ws_role, status=workspace_role["status"])
|
invitation = InvitationFactory.build(portfolio_role=ws_role, status=portfolio_role["status"])
|
||||||
db.session.add(invitation)
|
db.session.add(invitation)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
Applications.create(
|
Applications.create(
|
||||||
user,
|
user,
|
||||||
workspace=workspace,
|
portfolio=portfolio,
|
||||||
name="First Project",
|
name="First Application",
|
||||||
description="This is our first project.",
|
description="This is our first application.",
|
||||||
environment_names=["dev", "staging", "prod"],
|
environment_names=["dev", "staging", "prod"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user