mock report data for predetermined workspace names

This commit is contained in:
dandds 2018-09-20 09:28:50 -04:00
parent faf8e3b519
commit 4e75927b52
2 changed files with 52 additions and 34 deletions

View File

@ -151,9 +151,10 @@ REPORT_FIXTURE_MAP = {
"cumulative": CUMULATIVE_BUDGET_BELUGA, "cumulative": CUMULATIVE_BUDGET_BELUGA,
"monthly": MONTHLY_SPEND_BELUGA, "monthly": MONTHLY_SPEND_BELUGA,
"budget": 70_000, "budget": 70_000,
} },
} }
def _sum_monthly_spend(data): def _sum_monthly_spend(data):
return sum( 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: class Reports:
@classmethod @classmethod
def workspace_totals(cls, workspace): 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"] budget = REPORT_FIXTURE_MAP[workspace.name]["budget"]
spent = _sum_monthly_spend(REPORT_FIXTURE_MAP[workspace.name]["monthly"]) spent = _sum_monthly_spend(REPORT_FIXTURE_MAP[workspace.name]["monthly"])
elif workspace.request and workspace.request.task_order: elif workspace.request and workspace.request.task_order:
ws_to = workspace.request.task_order ws_to = workspace.request.task_order
budget = ws_to.budget budget = ws_to.budget
# spent will be derived from CSP data
spent = 0 spent = 0
else: else:
budget = 0 budget = 0
spent = 0 spent = 0
# spent will be derived from CSP data
return {"budget": budget, "spent": spent} return {"budget": budget, "spent": spent}
@classmethod @classmethod
def monthly_totals(cls, alternate): def monthly_totals(cls, workspace):
data = MONTHLY_SPEND_BELUGA if alternate else MONTHLY_SPEND_AARDVARK if workspace.name in REPORT_FIXTURE_MAP:
project_totals = {} data = REPORT_FIXTURE_MAP[workspace.name]["monthly"]
for project, environments in data.items(): project_totals = _derive_project_totals(data)
project_spend = [ workspace_totals = _derive_workspace_totals(project_totals)
(month, spend) else:
for env in environments.values() data = {}
for month, spend in env.items() project_totals = {}
] workspace_totals = {}
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])
return { return {
"environments": data, "environments": data,
@ -212,9 +230,10 @@ class Reports:
} }
@classmethod @classmethod
def cumulative_budget(cls, alternate): def cumulative_budget(cls, workspace):
return { if workspace.name in REPORT_FIXTURE_MAP:
"months": CUMULATIVE_BUDGET_BELUGA months = REPORT_FIXTURE_MAP[workspace.name]["cumulative"]
if alternate else:
else CUMULATIVE_BUDGET_AARDVARK months = {}
}
return {"months": months}

View File

@ -98,7 +98,6 @@ def workspace_reports(workspace_id):
"view workspace reports", "view workspace reports",
) )
alternate_reports = http_request.args.get("alternate")
today = date.today() today = date.today()
month = http_request.args.get("month", today.month) month = http_request.args.get("month", today.month)
year = http_request.args.get("year", today.year) year = http_request.args.get("year", today.year)
@ -113,9 +112,9 @@ def workspace_reports(workspace_id):
return render_template( return render_template(
"workspaces/reports/index.html", "workspaces/reports/index.html",
cumulative_budget=Reports.cumulative_budget(alternate_reports), cumulative_budget=Reports.cumulative_budget(workspace),
workspace_totals=Reports.workspace_totals(workspace), workspace_totals=Reports.workspace_totals(workspace),
monthly_totals=Reports.monthly_totals(alternate_reports), monthly_totals=Reports.monthly_totals(workspace),
current_month=current_month, current_month=current_month,
prev_month=prev_month, prev_month=prev_month,
two_months_ago=two_months_ago, two_months_ago=two_months_ago,