From 4e75927b52b55af7c17384387f24589b5e5b43b0 Mon Sep 17 00:00:00 2001 From: dandds Date: Thu, 20 Sep 2018 09:28:50 -0400 Subject: [PATCH] mock report data for predetermined workspace names --- atst/domain/reports.py | 81 ++++++++++++++++++++++++--------------- atst/routes/workspaces.py | 5 +-- 2 files changed, 52 insertions(+), 34 deletions(-) diff --git a/atst/domain/reports.py b/atst/domain/reports.py index cecd07ca..951027c3 100644 --- a/atst/domain/reports.py +++ b/atst/domain/reports.py @@ -151,9 +151,10 @@ REPORT_FIXTURE_MAP = { "cumulative": CUMULATIVE_BUDGET_BELUGA, "monthly": MONTHLY_SPEND_BELUGA, "budget": 70_000, - } + }, } + def _sum_monthly_spend(data): return sum( [ @@ -164,46 +165,63 @@ def _sum_monthly_spend(data): ] ) + +def _derive_project_totals(data): + project_totals = {} + for project, environments in data.items(): + project_spend = [ + (month, spend) + for env in environments.values() + for month, spend in env.items() + ] + project_totals[project] = { + month: sum([spend[1] for spend in spends]) + for month, spends in groupby(sorted(project_spend), lambda x: x[0]) + } + + return project_totals + + +def _derive_workspace_totals(project_totals): + monthly_spend = [ + (month, spend) + for project in project_totals.values() + for month, spend in project.items() + ] + workspace_totals = {} + for month, spends in groupby(sorted(monthly_spend), lambda m: m[0]): + workspace_totals[month] = sum([spend[1] for spend in spends]) + + return workspace_totals + + class Reports: @classmethod def workspace_totals(cls, workspace): - if workspace.name in REPORT_FIXTURE_MAP.keys(): + if workspace.name in REPORT_FIXTURE_MAP: budget = REPORT_FIXTURE_MAP[workspace.name]["budget"] spent = _sum_monthly_spend(REPORT_FIXTURE_MAP[workspace.name]["monthly"]) elif workspace.request and workspace.request.task_order: ws_to = workspace.request.task_order budget = ws_to.budget + # spent will be derived from CSP data spent = 0 else: budget = 0 spent = 0 - # spent will be derived from CSP data return {"budget": budget, "spent": spent} @classmethod - def monthly_totals(cls, alternate): - data = MONTHLY_SPEND_BELUGA if alternate else MONTHLY_SPEND_AARDVARK - project_totals = {} - for project, environments in data.items(): - project_spend = [ - (month, spend) - for env in environments.values() - for month, spend in env.items() - ] - project_totals[project] = { - month: sum([spend[1] for spend in spends]) - for month, spends in groupby(sorted(project_spend), lambda x: x[0]) - } - - monthly_spend = [ - (month, spend) - for project in project_totals.values() - for month, spend in project.items() - ] - workspace_totals = {} - for month, spends in groupby(sorted(monthly_spend), lambda m: m[0]): - workspace_totals[month] = sum([spend[1] for spend in spends]) + def monthly_totals(cls, workspace): + if workspace.name in REPORT_FIXTURE_MAP: + data = REPORT_FIXTURE_MAP[workspace.name]["monthly"] + project_totals = _derive_project_totals(data) + workspace_totals = _derive_workspace_totals(project_totals) + else: + data = {} + project_totals = {} + workspace_totals = {} return { "environments": data, @@ -212,9 +230,10 @@ class Reports: } @classmethod - def cumulative_budget(cls, alternate): - return { - "months": CUMULATIVE_BUDGET_BELUGA - if alternate - else CUMULATIVE_BUDGET_AARDVARK - } + def cumulative_budget(cls, workspace): + if workspace.name in REPORT_FIXTURE_MAP: + months = REPORT_FIXTURE_MAP[workspace.name]["cumulative"] + else: + months = {} + + return {"months": months} diff --git a/atst/routes/workspaces.py b/atst/routes/workspaces.py index 365f2836..9879d90c 100644 --- a/atst/routes/workspaces.py +++ b/atst/routes/workspaces.py @@ -98,7 +98,6 @@ def workspace_reports(workspace_id): "view workspace reports", ) - alternate_reports = http_request.args.get("alternate") today = date.today() month = http_request.args.get("month", today.month) year = http_request.args.get("year", today.year) @@ -113,9 +112,9 @@ def workspace_reports(workspace_id): return render_template( "workspaces/reports/index.html", - cumulative_budget=Reports.cumulative_budget(alternate_reports), + cumulative_budget=Reports.cumulative_budget(workspace), workspace_totals=Reports.workspace_totals(workspace), - monthly_totals=Reports.monthly_totals(alternate_reports), + monthly_totals=Reports.monthly_totals(workspace), current_month=current_month, prev_month=prev_month, two_months_ago=two_months_ago,