36 lines
878 B
Python
36 lines
878 B
Python
import json
|
|
from decimal import Decimal
|
|
import pendulum
|
|
|
|
|
|
def load_fixture_data():
|
|
with open("fixtures/fixture_spend_data.json") as json_file:
|
|
return json.load(json_file)
|
|
|
|
|
|
class MockReportingProvider:
|
|
FIXTURE_SPEND_DATA = load_fixture_data()
|
|
|
|
|
|
def prepare_azure_reporting_data(rows: list):
|
|
"""
|
|
Returns a dict representing invoiced and estimated funds for a portfolio given
|
|
a list of rows from CostManagementQueryCSPResult.properties.rows
|
|
{
|
|
invoiced: Decimal,
|
|
estimated: Decimal
|
|
}
|
|
"""
|
|
|
|
estimated = []
|
|
while rows:
|
|
if pendulum.parse(rows[-1][1]) >= pendulum.now(tz="utc").start_of("month"):
|
|
estimated.append(rows.pop())
|
|
else:
|
|
break
|
|
|
|
return dict(
|
|
invoiced=Decimal(sum([row[0] for row in rows])),
|
|
estimated=Decimal(sum([row[0] for row in estimated])),
|
|
)
|