139 lines
4.1 KiB
Python
139 lines
4.1 KiB
Python
# Add root application 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 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.portfolios import Portfolios
|
|
from atst.domain.applications import Applications
|
|
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
|
|
|
|
portfolio_USERS = [
|
|
{
|
|
"first_name": "Danny",
|
|
"last_name": "Knight",
|
|
"email": "knight@mil.gov",
|
|
"portfolio_role": "developer",
|
|
"dod_id": "0000000001",
|
|
},
|
|
{
|
|
"first_name": "Mario",
|
|
"last_name": "Hudson",
|
|
"email": "hudson@mil.gov",
|
|
"portfolio_role": "billing_auditor",
|
|
"dod_id": "0000000002",
|
|
},
|
|
{
|
|
"first_name": "Louise",
|
|
"last_name": "Greer",
|
|
"email": "greer@mil.gov",
|
|
"portfolio_role": "admin",
|
|
"dod_id": "0000000003",
|
|
},
|
|
]
|
|
|
|
PORTFOLIO_INVITED_USERS = [
|
|
{
|
|
"first_name": "Frederick",
|
|
"last_name": "Fitzgerald",
|
|
"email": "frederick@mil.gov",
|
|
"portfolio_role": "developer",
|
|
"dod_id": "0000000004",
|
|
"status": InvitationStatus.REJECTED_WRONG_USER
|
|
},
|
|
{
|
|
"first_name": "Gina",
|
|
"last_name": "Guzman",
|
|
"email": "gina@mil.gov",
|
|
"portfolio_role": "developer",
|
|
"dod_id": "0000000005",
|
|
"status": InvitationStatus.REJECTED_EXPIRED
|
|
},
|
|
{
|
|
"first_name": "Hector",
|
|
"last_name": "Harper",
|
|
"email": "hector@mil.gov",
|
|
"portfolio_role": "developer",
|
|
"dod_id": "0000000006",
|
|
"status": InvitationStatus.REVOKED
|
|
},
|
|
{
|
|
"first_name": "Isabella",
|
|
"last_name": "Ingram",
|
|
"email": "isabella@mil.gov",
|
|
"portfolio_role": "developer",
|
|
"dod_id": "0000000007",
|
|
"status": InvitationStatus.PENDING
|
|
},
|
|
]
|
|
|
|
|
|
def seed_db():
|
|
users = []
|
|
for dev_user in DEV_USERS.values():
|
|
try:
|
|
user = Users.create(**dev_user)
|
|
except AlreadyExistsError:
|
|
user = Users.get_by_dod_id(dev_user["dod_id"])
|
|
|
|
users.append(user)
|
|
|
|
for user in users:
|
|
if Requests.get_many(creator=user):
|
|
continue
|
|
|
|
requests = []
|
|
for dollar_value in [1, 200, 3000, 40000, 500000, 1000000]:
|
|
request = RequestFactory.build(creator=user)
|
|
request.latest_revision.dollar_value = dollar_value
|
|
db.session.add(request)
|
|
db.session.commit()
|
|
|
|
Requests.submit(request)
|
|
requests.append(request)
|
|
|
|
request = requests[0]
|
|
request.legacy_task_order = LegacyTaskOrderFactory.build()
|
|
request = Requests.update(
|
|
request.id, {"financial_verification": RequestFactory.mock_financial_data()}
|
|
)
|
|
|
|
portfolio = Portfolios.create(
|
|
user, name="{}'s portfolio".format(user.first_name)
|
|
)
|
|
for portfolio_role in portfolio_USERS:
|
|
ws_role = Portfolios.create_member(user, portfolio, portfolio_role)
|
|
db.session.refresh(ws_role)
|
|
PortfolioRoles.enable(ws_role)
|
|
|
|
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,
|
|
portfolio=portfolio,
|
|
name="First Application",
|
|
description="This is our first application.",
|
|
environment_names=["dev", "staging", "prod"],
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
config = make_config()
|
|
app = make_app(config)
|
|
with app.app_context():
|
|
seed_db()
|