fix seed scripts

This commit is contained in:
dandds 2019-01-11 10:53:56 -05:00
parent 372dac306f
commit 79613fbe40
2 changed files with 51 additions and 51 deletions

View File

@ -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"])

View File

@ -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"],
)