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

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