From b82b5bb9c053e30f617ecaffbc80b4aaf9a26ed8 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 4 Mar 2019 13:26:45 -0500 Subject: [PATCH 1/3] Add in start and end dates to creating TOs and refactor to create all TOs at once so they can have overlapping start/end dates --- script/seed_sample.py | 71 +++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 47 deletions(-) diff --git a/script/seed_sample.py b/script/seed_sample.py index f6534f27..d4944d4c 100644 --- a/script/seed_sample.py +++ b/script/seed_sample.py @@ -122,11 +122,22 @@ def add_members_to_portfolio(portfolio, users): db.session.commit() -def add_active_task_order(portfolio, active_exp_days=90, clin_01=None, clin_03=None): - start = random_past_date(year_max=1, year_min=1) +def add_task_orders_to_portfolio(portfolio, to_length=90, clin_01=None, clin_03=None): + active_to_offset = random.randint(10,31) + active_start = (date.today() - timedelta(days=active_to_offset)) # exp TO ends same day as active TO starts + active_end = (active_start + timedelta(to_length)) # pending TO starts the same day active TO ends + pending_end = (active_end + timedelta(to_length)) + exp_start = (active_start - timedelta(to_length)) + + create_task_order(portfolio, start=exp_start, end=active_start) + create_task_order(portfolio, start=active_start, end=active_end, clin_01=clin_01, clin_03=clin_03) + create_task_order(portfolio, start=active_end, end=pending_end) + + +def create_task_order(portfolio, start, end, clin_01=None, clin_03=None): default_kwargs = { "start_date": start, - "end_date": (date.today() + timedelta(days=active_exp_days)), + "end_date": end, "number": random_task_order_number(), "portfolio": portfolio, "clin_02": 0, @@ -143,31 +154,6 @@ def add_active_task_order(portfolio, active_exp_days=90, clin_01=None, clin_03=N db.session.commit() -def add_expired_task_order(portfolio): - start = random_past_date(year_max=3, year_min=2) - task_order = TaskOrderFactory.build( - start_date=start, - end_date=(start + timedelta(days=90)), - number=random_task_order_number(), - portfolio=portfolio, - ) - db.session.add(task_order) - db.session.commit() - - -def add_pending_task_order(portfolio): - start_date = random_future_date(year_min=1, year_max=2) - - task_order = TaskOrderFactory.build( - start_date=start_date, - end_date=(start_date + timedelta(days=90)), - number=random_task_order_number(), - portfolio=portfolio, - ) - db.session.add(task_order) - db.session.commit() - - def add_applications_to_portfolio(portfolio, applications): for application in applications: Applications.create( @@ -195,9 +181,7 @@ def create_demo_portfolio(name, data): clin_01 = data["budget"] * 0.8 clin_03 = data["budget"] * 0.2 - add_active_task_order(portfolio, clin_01=clin_01, clin_03=clin_03) - add_expired_task_order(portfolio) - add_pending_task_order(portfolio) + add_task_orders_to_portfolio(portfolio, clin_01=clin_01, clin_03=clin_03) add_members_to_portfolio(portfolio, users=get_users()) for mock_application in data["applications"]: @@ -225,34 +209,27 @@ def seed_db(): create_demo_portfolio("A-Wing", MockReportingProvider.REPORT_FIXTURE_MAP["A-Wing"]) create_demo_portfolio("B-Wing", MockReportingProvider.REPORT_FIXTURE_MAP["B-Wing"]) - # Create Portfolio for Amanda with TO that is expiring soon and does not have another TO - unfunded_portfolio = Portfolios.create( + tie_interceptor = Portfolios.create( amanda, name="TIE Interceptor", defense_component=random_service_branch() ) - add_active_task_order(unfunded_portfolio, active_exp_days=20) - add_expired_task_order(unfunded_portfolio) - add_members_to_portfolio(unfunded_portfolio, users=users) - add_applications_to_portfolio(unfunded_portfolio, application_info) + add_task_orders_to_portfolio(tie_interceptor) + add_members_to_portfolio(tie_interceptor, users=users) + add_applications_to_portfolio(tie_interceptor, application_info) - # Create Portfolio for Amanda with TO that is expiring soon and has another TO - funded_portfolio = Portfolios.create( + tie_fighter = Portfolios.create( amanda, name="TIE Fighter", defense_component=random_service_branch() ) - add_active_task_order(funded_portfolio, active_exp_days=20) - add_expired_task_order(funded_portfolio) - add_pending_task_order(funded_portfolio) - add_members_to_portfolio(funded_portfolio, users=users) - add_applications_to_portfolio(funded_portfolio, application_info) + add_task_orders_to_portfolio(tie_fighter) + add_members_to_portfolio(tie_fighter, users=users) + add_applications_to_portfolio(tie_fighter, application_info) # create a portfolio 'Y-Wing' for each user for user in users: portfolio = Portfolios.create( user, name="Y-Wing", defense_component=random_service_branch() ) + add_task_orders_to_portfolio(portfolio) add_members_to_portfolio(portfolio, users=users) - add_active_task_order(portfolio) - add_expired_task_order(portfolio) - add_pending_task_order(portfolio) add_applications_to_portfolio(portfolio, application_info) From 04dc6703b2fda265d614218fe471b88eaed45ff2 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 4 Mar 2019 13:32:53 -0500 Subject: [PATCH 2/3] Move inviting members into separate function so portfolios can be created where all members have accepted invites --- script/seed_sample.py | 48 +++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/script/seed_sample.py b/script/seed_sample.py index d4944d4c..071e3775 100644 --- a/script/seed_sample.py +++ b/script/seed_sample.py @@ -101,23 +101,28 @@ def get_users(): return users -def add_members_to_portfolio(portfolio, users): - for user in users: - for portfolio_role in PORTFOLIO_USERS: - ws_role = Portfolios.create_member( - portfolio.owner, portfolio, portfolio_role - ) - db.session.refresh(ws_role) - PortfolioRoles.enable(ws_role) +def add_members_to_portfolio(portfolio): + get_users() + for portfolio_role in PORTFOLIO_USERS: + ws_role = Portfolios.create_member( + portfolio.owner, portfolio, portfolio_role + ) + db.session.refresh(ws_role) + PortfolioRoles.enable(ws_role) - for portfolio_role in PORTFOLIO_INVITED_USERS: - ws_role = Portfolios.create_member( - portfolio.owner, portfolio, portfolio_role - ) - invitation = InvitationFactory.build( - portfolio_role=ws_role, status=portfolio_role["status"] - ) - db.session.add(invitation) + db.session.commit() + + +def invite_members_to_portfolio(portfolio): + get_users() + for portfolio_role in PORTFOLIO_INVITED_USERS: + ws_role = Portfolios.create_member( + portfolio.owner, portfolio, portfolio_role + ) + invitation = InvitationFactory.build( + portfolio_role=ws_role, status=portfolio_role["status"] + ) + db.session.add(invitation) db.session.commit() @@ -182,7 +187,7 @@ def create_demo_portfolio(name, data): clin_03 = data["budget"] * 0.2 add_task_orders_to_portfolio(portfolio, clin_01=clin_01, clin_03=clin_03) - add_members_to_portfolio(portfolio, users=get_users()) + add_members_to_portfolio(portfolio) for mock_application in data["applications"]: application = Application( @@ -195,7 +200,6 @@ def create_demo_portfolio(name, data): def seed_db(): - users = get_users() amanda = Users.get_by_dod_id("2345678901") application_info = [ { @@ -213,23 +217,23 @@ def seed_db(): amanda, name="TIE Interceptor", defense_component=random_service_branch() ) add_task_orders_to_portfolio(tie_interceptor) - add_members_to_portfolio(tie_interceptor, users=users) + add_members_to_portfolio(tie_interceptor) add_applications_to_portfolio(tie_interceptor, application_info) tie_fighter = Portfolios.create( amanda, name="TIE Fighter", defense_component=random_service_branch() ) add_task_orders_to_portfolio(tie_fighter) - add_members_to_portfolio(tie_fighter, users=users) + add_members_to_portfolio(tie_fighter) add_applications_to_portfolio(tie_fighter, application_info) # create a portfolio 'Y-Wing' for each user - for user in users: + for user in get_users(): portfolio = Portfolios.create( user, name="Y-Wing", defense_component=random_service_branch() ) add_task_orders_to_portfolio(portfolio) - add_members_to_portfolio(portfolio, users=users) + add_members_to_portfolio(portfolio) add_applications_to_portfolio(portfolio, application_info) From 600d6d1993e8f7dff8ef0928f60447a7ea3eb217 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 4 Mar 2019 13:41:18 -0500 Subject: [PATCH 3/3] Formatting --- script/seed_sample.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/script/seed_sample.py b/script/seed_sample.py index 071e3775..1b17d28b 100644 --- a/script/seed_sample.py +++ b/script/seed_sample.py @@ -104,9 +104,7 @@ def get_users(): def add_members_to_portfolio(portfolio): get_users() for portfolio_role in PORTFOLIO_USERS: - ws_role = Portfolios.create_member( - portfolio.owner, portfolio, portfolio_role - ) + ws_role = Portfolios.create_member(portfolio.owner, portfolio, portfolio_role) db.session.refresh(ws_role) PortfolioRoles.enable(ws_role) @@ -116,9 +114,7 @@ def add_members_to_portfolio(portfolio): def invite_members_to_portfolio(portfolio): get_users() for portfolio_role in PORTFOLIO_INVITED_USERS: - ws_role = Portfolios.create_member( - portfolio.owner, portfolio, portfolio_role - ) + ws_role = Portfolios.create_member(portfolio.owner, portfolio, portfolio_role) invitation = InvitationFactory.build( portfolio_role=ws_role, status=portfolio_role["status"] ) @@ -128,14 +124,18 @@ def invite_members_to_portfolio(portfolio): def add_task_orders_to_portfolio(portfolio, to_length=90, clin_01=None, clin_03=None): - active_to_offset = random.randint(10,31) - active_start = (date.today() - timedelta(days=active_to_offset)) # exp TO ends same day as active TO starts - active_end = (active_start + timedelta(to_length)) # pending TO starts the same day active TO ends - pending_end = (active_end + timedelta(to_length)) - exp_start = (active_start - timedelta(to_length)) + active_to_offset = random.randint(10, 31) + # exp TO ends same day as active TO starts + active_start = date.today() - timedelta(days=active_to_offset) + # pending TO starts the same day active TO ends + active_end = active_start + timedelta(to_length) + pending_end = active_end + timedelta(to_length) + exp_start = active_start - timedelta(to_length) create_task_order(portfolio, start=exp_start, end=active_start) - create_task_order(portfolio, start=active_start, end=active_end, clin_01=clin_01, clin_03=clin_03) + create_task_order( + portfolio, start=active_start, end=active_end, clin_01=clin_01, clin_03=clin_03 + ) create_task_order(portfolio, start=active_end, end=pending_end)