45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
from pyramid.view import view_config
|
|
|
|
@view_config(route_name="gaugeoff_all", renderer="templates/gaugeoff_all.jinja2")
|
|
@view_config(route_name="gaugeoff_all_json", renderer="prettyjson")
|
|
def gaugeoff_all(request):
|
|
gaugeoff_list = []
|
|
dateagg = list(request.db['gaugeOff'].aggregate(
|
|
[
|
|
{
|
|
'$project': {
|
|
'yearMonthDay': {'$dateToString': {'format': "%Y-%m-%d", 'date': "$timestamp"}},
|
|
'tagname': 1,
|
|
'dailyTotal': 1,
|
|
'dailyAverage': 1,
|
|
'maxDailyValue': 1,
|
|
'minDailyValue': 1,
|
|
'currentValue': 1
|
|
}
|
|
},
|
|
{
|
|
'$group': {
|
|
'_id': "$yearMonthDay",
|
|
'tags': {'$push': {'name': "$tagname"}},
|
|
'totals': {'$push': {'total': "$dailyTotal"}},
|
|
'averages': {'$push': {'average': "$dailyAverage"}},
|
|
'max': {'$push': {'max': "$maxDailyValue"}},
|
|
'min': {'$push': {'min': "$minDailyValue"}},
|
|
'last': {'$push': {'last': "$currentValue"}}
|
|
}
|
|
}
|
|
]))
|
|
for d in dateagg:
|
|
newGO = {'date': datetime.strptime(d["_id"], '%Y-%m-%d'), 'tags': {}}
|
|
for i in range(0, len(d['tags'])):
|
|
newTagObj = {
|
|
"max": d['max'][i]['max'],
|
|
"min": d['min'][i]['min'],
|
|
"last": d['last'][i]['last'],
|
|
"total": d['totals'][i]['total'],
|
|
"average": d['averages'][i]['average'],
|
|
}
|
|
newGO['tags'][d['tags'][i]['name']] = newTagObj
|
|
gaugeoff_list.append(newGO)
|
|
return {'navgroup': 'gaugeoff', 'data': gaugeoff_list}
|