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 sys
|
||||
|
||||
@ -15,14 +15,14 @@ from atst.app import make_config, make_app
|
||||
from atst.models.audit_event import AuditEvent
|
||||
from atst.models.environment import Environment
|
||||
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_revision import RequestRevision
|
||||
from atst.models.request_status_event import RequestStatus, RequestStatusEvent
|
||||
from atst.models.role import Role
|
||||
from atst.models.user import User
|
||||
from atst.models.workspace_role import WorkspaceRole
|
||||
from atst.models.workspace import Workspace
|
||||
from atst.models.portfolio_role import PortfolioRole
|
||||
from atst.models.portfolio import Portfolio
|
||||
from atst.models.mixins import AuditableMixin
|
||||
|
||||
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.requests import Requests
|
||||
from atst.domain.users import Users
|
||||
from atst.domain.workspaces import Workspaces
|
||||
from atst.domain.portfolios import portfolios
|
||||
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:
|
||||
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
|
||||
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
|
||||
|
||||
request = RequestFactory.build(creator=workspace_owner)
|
||||
request = RequestFactory.build(creator=portfolio_owner)
|
||||
request.legacy_task_order = LegacyTaskOrderFactory.build()
|
||||
request = Requests.update(
|
||||
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
||||
)
|
||||
approved_request = Requests.set_status(request, RequestStatus.APPROVED)
|
||||
|
||||
workspace = Requests.approve_and_create_workspace(request)
|
||||
Workspaces.update(workspace, { "name": name })
|
||||
portfolio = Requests.approve_and_create_portfolio(request)
|
||||
portfolios.update(portfolio, { "name": name })
|
||||
|
||||
for mock_project in data["projects"]:
|
||||
project = Project(workspace=workspace, name=mock_project.name, description='')
|
||||
env_names = [env.name for env in mock_project.environments]
|
||||
envs = Environments.create_many(project, env_names)
|
||||
db.session.add(project)
|
||||
for mock_application in data["applications"]:
|
||||
application = application(portfolio=portfolio, name=mock_application.name, description='')
|
||||
env_names = [env.name for env in mock_application.environments]
|
||||
envs = Environments.create_many(application, env_names)
|
||||
db.session.add(application)
|
||||
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]
|
||||
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 = (
|
||||
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()
|
||||
)
|
||||
workspace_roles = [role for workspace in workspaces for role in workspace.roles]
|
||||
invites = [invite for role in workspace_roles for invite in role.invitations]
|
||||
projects = [p for workspace in workspaces for p in workspace.projects]
|
||||
portfolio_roles = [role for portfolio in portfolios for role in portfolio.roles]
|
||||
invites = [invite for role in portfolio_roles for invite in role.invitations]
|
||||
applications = [p for portfolio in portfolios for p in portfolio.applications]
|
||||
environments = (
|
||||
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()
|
||||
)
|
||||
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 [
|
||||
roles,
|
||||
environments,
|
||||
projects,
|
||||
applications,
|
||||
invites,
|
||||
workspace_roles,
|
||||
portfolio_roles,
|
||||
ws_audit,
|
||||
events,
|
||||
revisions,
|
||||
@ -135,9 +135,9 @@ def remove_sample_data(all_users=False):
|
||||
|
||||
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(
|
||||
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);"
|
||||
@ -153,5 +153,5 @@ if __name__ == "__main__":
|
||||
app = make_app(config)
|
||||
with app.app_context():
|
||||
remove_sample_data()
|
||||
create_demo_workspace('Aardvark', MockReportingProvider.REPORT_FIXTURE_MAP["Aardvark"])
|
||||
create_demo_workspace('Beluga', MockReportingProvider.REPORT_FIXTURE_MAP["Beluga"])
|
||||
create_demo_portfolio('Aardvark', MockReportingProvider.REPORT_FIXTURE_MAP["Aardvark"])
|
||||
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 sys
|
||||
|
||||
@ -9,44 +9,44 @@ from atst.database import db
|
||||
from atst.app import make_config, make_app
|
||||
from atst.domain.users import Users
|
||||
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.workspace_roles import WorkspaceRoles
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
from atst.models.invitation import Status as InvitationStatus
|
||||
from atst.domain.exceptions import AlreadyExistsError
|
||||
from tests.factories import RequestFactory, LegacyTaskOrderFactory, InvitationFactory
|
||||
from atst.routes.dev import _DEV_USERS as DEV_USERS
|
||||
|
||||
WORKSPACE_USERS = [
|
||||
portfolio_USERS = [
|
||||
{
|
||||
"first_name": "Danny",
|
||||
"last_name": "Knight",
|
||||
"email": "knight@mil.gov",
|
||||
"workspace_role": "developer",
|
||||
"portfolio_role": "developer",
|
||||
"dod_id": "0000000001",
|
||||
},
|
||||
{
|
||||
"first_name": "Mario",
|
||||
"last_name": "Hudson",
|
||||
"email": "hudson@mil.gov",
|
||||
"workspace_role": "billing_auditor",
|
||||
"portfolio_role": "billing_auditor",
|
||||
"dod_id": "0000000002",
|
||||
},
|
||||
{
|
||||
"first_name": "Louise",
|
||||
"last_name": "Greer",
|
||||
"email": "greer@mil.gov",
|
||||
"workspace_role": "admin",
|
||||
"portfolio_role": "admin",
|
||||
"dod_id": "0000000003",
|
||||
},
|
||||
]
|
||||
|
||||
WORKSPACE_INVITED_USERS = [
|
||||
portfolio_INVITED_USERS = [
|
||||
{
|
||||
"first_name": "Frederick",
|
||||
"last_name": "Fitzgerald",
|
||||
"email": "frederick@mil.gov",
|
||||
"workspace_role": "developer",
|
||||
"portfolio_role": "developer",
|
||||
"dod_id": "0000000004",
|
||||
"status": InvitationStatus.REJECTED_WRONG_USER
|
||||
},
|
||||
@ -54,7 +54,7 @@ WORKSPACE_INVITED_USERS = [
|
||||
"first_name": "Gina",
|
||||
"last_name": "Guzman",
|
||||
"email": "gina@mil.gov",
|
||||
"workspace_role": "developer",
|
||||
"portfolio_role": "developer",
|
||||
"dod_id": "0000000005",
|
||||
"status": InvitationStatus.REJECTED_EXPIRED
|
||||
},
|
||||
@ -62,7 +62,7 @@ WORKSPACE_INVITED_USERS = [
|
||||
"first_name": "Hector",
|
||||
"last_name": "Harper",
|
||||
"email": "hector@mil.gov",
|
||||
"workspace_role": "developer",
|
||||
"portfolio_role": "developer",
|
||||
"dod_id": "0000000006",
|
||||
"status": InvitationStatus.REVOKED
|
||||
},
|
||||
@ -70,7 +70,7 @@ WORKSPACE_INVITED_USERS = [
|
||||
"first_name": "Isabella",
|
||||
"last_name": "Ingram",
|
||||
"email": "isabella@mil.gov",
|
||||
"workspace_role": "developer",
|
||||
"portfolio_role": "developer",
|
||||
"dod_id": "0000000007",
|
||||
"status": InvitationStatus.PENDING
|
||||
},
|
||||
@ -107,26 +107,26 @@ def seed_db():
|
||||
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
||||
)
|
||||
|
||||
workspace = Workspaces.create(
|
||||
user, name="{}'s workspace".format(user.first_name)
|
||||
portfolio = Portfolios.create(
|
||||
user, name="{}'s portfolio".format(user.first_name)
|
||||
)
|
||||
for workspace_role in WORKSPACE_USERS:
|
||||
ws_role = Workspaces.create_member(user, workspace, workspace_role)
|
||||
for portfolio_role in portfolio_USERS:
|
||||
ws_role = Portfolios.create_member(user, portfolio, portfolio_role)
|
||||
db.session.refresh(ws_role)
|
||||
WorkspaceRoles.enable(ws_role)
|
||||
PortfolioRoles.enable(ws_role)
|
||||
|
||||
for workspace_role in WORKSPACE_INVITED_USERS:
|
||||
ws_role = Workspaces.create_member(user, workspace, workspace_role)
|
||||
invitation = InvitationFactory.build(workspace_role=ws_role, status=workspace_role["status"])
|
||||
for portfolio_role in portfolio_INVITED_USERS:
|
||||
ws_role = Portfolios.create_member(user, portfolio, portfolio_role)
|
||||
invitation = InvitationFactory.build(portfolio_role=ws_role, status=portfolio_role["status"])
|
||||
db.session.add(invitation)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
Applications.create(
|
||||
user,
|
||||
workspace=workspace,
|
||||
name="First Project",
|
||||
description="This is our first project.",
|
||||
portfolio=portfolio,
|
||||
name="First Application",
|
||||
description="This is our first application.",
|
||||
environment_names=["dev", "staging", "prod"],
|
||||
)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user