Merge pull request #586 from dod-ccpo/fix-remove-sample-data-script
Update script to remove sample data
This commit is contained in:
commit
f3adbe7a85
@ -7,7 +7,7 @@ sys.path.append(parent_dir)
|
|||||||
|
|
||||||
import ctypes
|
import ctypes
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
from sqlalchemy import or_, event as sqlalchemy_event
|
from sqlalchemy import event as sqlalchemy_event
|
||||||
|
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.app import make_config, make_app
|
from atst.app import make_config, make_app
|
||||||
@ -16,9 +16,6 @@ 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.application import Application
|
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.role import Role
|
||||||
from atst.models.user import User
|
from atst.models.user import User
|
||||||
from atst.models.portfolio_role import PortfolioRole
|
from atst.models.portfolio_role import PortfolioRole
|
||||||
@ -28,10 +25,8 @@ from atst.models.mixins import AuditableMixin
|
|||||||
from atst.domain.environments import Environments
|
from atst.domain.environments import Environments
|
||||||
from atst.domain.exceptions import NotFoundError
|
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.portfolios import Portfolios
|
||||||
from atst.domain.users import Users
|
from atst.domain.users import Users
|
||||||
from atst.domain.portfolios import portfolios
|
|
||||||
from tests.factories import RequestFactory, LegacyTaskOrderFactory
|
|
||||||
|
|
||||||
|
|
||||||
dod_ids = [
|
dod_ids = [
|
||||||
@ -50,26 +45,18 @@ dod_ids = [
|
|||||||
|
|
||||||
def create_demo_portfolio(name, data):
|
def create_demo_portfolio(name, data):
|
||||||
try:
|
try:
|
||||||
portfolio_owner = Users.get_by_dod_id("678678678") # Other
|
portfolio_owner = Users.get_or_create_by_dod_id("2345678901") # Amanda
|
||||||
auditor = Users.get_by_dod_id("3453453453") # Sally
|
# auditor = Users.get_by_dod_id("3453453453") # Sally
|
||||||
except NotFoundError:
|
except NotFoundError:
|
||||||
print(
|
print(
|
||||||
"Could not find demo users; will not create demo portfolio {}".format(name)
|
"Could not find demo users; will not create demo portfolio {}".format(name)
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
request = RequestFactory.build(creator=portfolio_owner)
|
portfolio = Portfolios.create(portfolio_owner, name=name)
|
||||||
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)
|
|
||||||
|
|
||||||
portfolio = Requests.approve_and_create_portfolio(request)
|
|
||||||
portfolios.update(portfolio, {"name": name})
|
|
||||||
|
|
||||||
for mock_application in data["applications"]:
|
for mock_application in data["applications"]:
|
||||||
application = application(
|
application = Application(
|
||||||
portfolio=portfolio, name=mock_application.name, description=""
|
portfolio=portfolio, name=mock_application.name, description=""
|
||||||
)
|
)
|
||||||
env_names = [env.name for env in mock_application.environments]
|
env_names = [env.name for env in mock_application.environments]
|
||||||
@ -95,25 +82,16 @@ def remove_sample_data(all_users=False):
|
|||||||
sqlalchemy_event.remove(model, identifier, AuditableMixin.audit_delete)
|
sqlalchemy_event.remove(model, identifier, AuditableMixin.audit_delete)
|
||||||
|
|
||||||
for user in users:
|
for user in users:
|
||||||
requests = (
|
all_portfolios = Portfolios.for_user(user)
|
||||||
db.session.query(Request)
|
portfolios = [p for p in all_portfolios if p.owner == user]
|
||||||
.filter(Request.id.in_([r.id for r in user.owned_requests]))
|
|
||||||
.all()
|
|
||||||
)
|
|
||||||
request_audit = (
|
|
||||||
db.session.query(AuditEvent)
|
|
||||||
.filter(AuditEvent.request_id.in_([r.id for r in requests]))
|
|
||||||
.all()
|
|
||||||
)
|
|
||||||
events = [ev for r in requests for ev in r.status_events]
|
|
||||||
revisions = [rev for r in requests for rev in r.revisions]
|
|
||||||
portfolios = [r.portfolio for r in requests if r.portfolio]
|
|
||||||
ws_audit = (
|
ws_audit = (
|
||||||
db.session.query(AuditEvent)
|
db.session.query(AuditEvent)
|
||||||
.filter(AuditEvent.portfolio_id.in_([w.id for w in portfolios]))
|
.filter(AuditEvent.portfolio_id.in_([w.id for w in portfolios]))
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
portfolio_roles = [role for portfolio in portfolios for role in portfolio.roles]
|
portfolio_roles = [role for portfolio in portfolios for role in portfolio.roles]
|
||||||
|
task_orders = [to for portfolio in portfolios for to in portfolio.task_orders]
|
||||||
invites = [invite for role in portfolio_roles for invite in role.invitations]
|
invites = [invite for role in portfolio_roles for invite in role.invitations]
|
||||||
applications = [p for portfolio in portfolios for p in portfolio.applications]
|
applications = [p for portfolio in portfolios for p in portfolio.applications]
|
||||||
environments = (
|
environments = (
|
||||||
@ -128,11 +106,9 @@ def remove_sample_data(all_users=False):
|
|||||||
environments,
|
environments,
|
||||||
applications,
|
applications,
|
||||||
invites,
|
invites,
|
||||||
|
task_orders,
|
||||||
portfolio_roles,
|
portfolio_roles,
|
||||||
ws_audit,
|
ws_audit,
|
||||||
events,
|
|
||||||
revisions,
|
|
||||||
request_audit,
|
|
||||||
]:
|
]:
|
||||||
for thing in set_of_things:
|
for thing in set_of_things:
|
||||||
db.session.delete(thing)
|
db.session.delete(thing)
|
||||||
@ -143,12 +119,6 @@ def remove_sample_data(all_users=False):
|
|||||||
db.session.connection().execute(
|
db.session.connection().execute(
|
||||||
sqlalchemy.text(query), ids=[w.id for w in portfolios]
|
sqlalchemy.text(query), ids=[w.id for w in portfolios]
|
||||||
)
|
)
|
||||||
|
|
||||||
query = "DELETE FROM requests WHERE requests.id = ANY(:ids);"
|
|
||||||
db.session.connection().execute(
|
|
||||||
sqlalchemy.text(query), ids=[r.id for r in requests]
|
|
||||||
)
|
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user