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,
"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}

View File

@ -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,