Files
POC-Java-www/pocwww/views.py
2017-03-09 18:12:18 -06:00

173 lines
6.6 KiB
Python

from pyramid.view import view_config
from pyramid.httpexceptions import HTTPFound
from pyramid.security import remember, forget
from datetime import datetime, timedelta
from math import ceil
from .view_helpers import *
@view_config(route_name='home', renderer='templates/dashboard.jinja2')
@view_config(route_name="json_snapshot", renderer="prettyjson")
def my_view(request):
return {'project': 'POC Web Interface', 'navgroup': 'dashboard', 'tag_values': get_lastest_tag_values(request), 'card': get_latest_card(request)}
@view_config(route_name='cards', renderer='templates/datelist.jinja2')
@view_config(route_name='json_cards', renderer='prettyjson')
def cards(request):
return {'datelist': get_all_dates_with_cards(request), 'navgroup': 'cards'}
@view_config(route_name='cards_page', renderer='templates/cardlist.jinja2')
@view_config(route_name='cards_date', renderer='templates/cardlist.jinja2')
@view_config(route_name='json_cards_date', renderer='prettyjson')
@view_config(route_name='json_cards_page', renderer='prettyjson')
def cards_page(request):
cp = card_page(request)
cp['datelist'] = get_all_dates_with_cards(request)
return cp
@view_config(route_name='card_single', renderer='templates/cardsingle.jinja2')
@view_config(route_name='json_card_single', renderer='prettyjson')
def card_single(request):
card = {}
try:
card = list(request.db['cards'].find({"strokeNumber": int(request.matchdict['stroke_number'])}))[0]
except IndexError:
pass
datepage_url = request.referrer.split("/")[3:]
page_num = 1
carddate = ""
if len(datepage_url) > 2:
page_num = int(datepage_url[2])
if len(datepage_url) > 1:
carddate = datepage_url[1]
return {"card": card, 'navgroup': 'cards', 'datelist': get_all_dates_with_cards(request), 'date': carddate, 'datepage': page_num}
@view_config(route_name='values_all', renderer="templates/valuesall.jinja2")
@view_config(route_name='json_values_all', renderer='prettyjson')
def values_all(request):
return {'navgroup': 'values', 'current_tag_values': get_lastest_tag_values(request)}
@view_config(route_name="values_tag", renderer="templates/values_single.jinja2")
def values_tag(request):
tagname = request.matchdict['tagname']
return {'navgroup': 'values', 'tagname': tagname}
@view_config(route_name="gaugeoff_all", renderer="templates/gaugeoff_all.jinja2")
@view_config(route_name="json_gaugeoff_all", 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}
@view_config(route_name="fluidshots_all", renderer="templates/fluidshots.jinja2")
@view_config(route_name="json_fluidshots_all", renderer="prettyjson")
def fluidshots_all(request):
fluidshots = list(request.db['fluidShots'].find())
return {'navgroup': 'fluidshots', 'data': fluidshots}
@view_config(route_name="welltests_all", renderer="templates/welltests.jinja2")
@view_config(route_name="json_welltests_all", renderer="prettyjson")
def welltests_all(request):
welltests = list(request.db['wellTests'].find())
return {'navgroup': 'welltests', 'data': welltests}
@view_config(route_name="runstatus", renderer="templates/runstatus.jinja2")
@view_config(route_name="json_runstatus", renderer="prettyjson")
@view_config(route_name="json_runstatus_page", renderer="prettyjson")
def run_status(request):
page_num = 1
try:
page_num = int(request.matchdict['page_num'])
except KeyError:
pass
num_per_page = 100
num_cards = request.db['runStatus'].count()
pages = ceil(num_cards / num_per_page)
runStatuses = list(request.db['runStatus'].find().sort("timestamp", -1).skip(num_per_page * (page_num - 1)).limit(num_per_page))
return {'navgroup': 'runstatus', 'data': runStatuses, 'pagination': Pagination(page_num, num_per_page, num_cards)}
@view_config(route_name="config", renderer="templates/config.jinja2", permission="edit")
@view_config(route_name="json_config", renderer="prettyjson", permission="edit")
def well_config(request):
current_configuration = list(request.db['wellConfiguration'].find().sort("timestamp", -1).limit(1))[0]
return {'navgroup': 'config', 'config': current_configuration}
@view_config(route_name="admin", renderer="templates/admin.jinja2", permission="edit")
def admin_view(request):
address = get_poc_address(request) or 'localhost'
return {'navgroup': 'admin', 'pocIPAddress': address}
@view_config(route_name="auth")
def sign_in_out(request):
username = request.POST.get('username')
if username:
if check_password(request, username, request.POST.get('password')):
headers = remember(request, username)
else:
headers = forget(request)
else:
headers = forget(request)
return HTTPFound(location=request.route_url('home'), headers=headers)
@view_config(route_name='register',
renderer='templates/register.jinja2', permission="edit")
def register(request):
return {"navgroup": "user"}
@view_config(route_name='setpoints', renderer='templates/setpoints.jinja2', permission='edit')
def setpoints(request):
return {"navgroup": "setpoints"}