More splitting files out
This commit is contained in:
@@ -125,19 +125,18 @@ def main(global_config, **settings):
|
|||||||
|
|
||||||
# SHARED ROUTES
|
# SHARED ROUTES
|
||||||
config.add_route('home', '/')
|
config.add_route('home', '/')
|
||||||
config.add_route('json_snapshot', '/json')
|
config.add_route('home_json', '/json')
|
||||||
config.add_route("json_users", "/json/users", factory='pocwww.security.UserLoginFactory')
|
|
||||||
|
|
||||||
# Cards
|
# Cards
|
||||||
config.add_route('cards_page', '/cards/{cards_date}/{page_num}')
|
config.add_route('cards_page', '/cards/{cards_date}/{page_num}')
|
||||||
config.add_route('json_cards_page', '/json/cards/{cards_date}/{page_num}')
|
config.add_route('cards_page_json', '/json/cards/{cards_date}/{page_num}')
|
||||||
config.add_route('cards_date', '/cards/{cards_date}')
|
config.add_route('cards_date', '/cards/{cards_date}')
|
||||||
config.add_route('json_cards_date', '/json/cards/{cards_date}')
|
config.add_route('cards_date_json', '/json/cards/{cards_date}')
|
||||||
config.add_route('cards', '/cards')
|
config.add_route('cards', '/cards')
|
||||||
config.add_route('json_cards', '/json/cards')
|
config.add_route('cards_json', '/json/cards')
|
||||||
config.add_route('card_single', "/card/view/{stroke_number}")
|
config.add_route('cards_singlecard', "/card/view/{stroke_number}")
|
||||||
config.add_route('json_card_single', "/json/card/view/{stroke_number}")
|
config.add_route('cards_singlecard_json', "/json/card/view/{stroke_number}")
|
||||||
config.add_route('json_lastcard', "/json/lastcard")
|
config.add_route('cards_lastcard_json', "/json/lastcard")
|
||||||
|
|
||||||
# Measurements
|
# Measurements
|
||||||
config.add_route('measurements_all', "/values")
|
config.add_route('measurements_all', "/values")
|
||||||
@@ -152,41 +151,43 @@ def main(global_config, **settings):
|
|||||||
|
|
||||||
# Gauge Off
|
# Gauge Off
|
||||||
config.add_route('gaugeoff_all', '/gaugeoff')
|
config.add_route('gaugeoff_all', '/gaugeoff')
|
||||||
config.add_route('json_gaugeoff_all', '/json/gaugeoff')
|
config.add_route('gaugeoff_all_json', '/json/gaugeoff')
|
||||||
|
|
||||||
# Fluid Shots
|
# Fluid Shots
|
||||||
config.add_route('fluidshots_all', '/fluidshots')
|
config.add_route('fluidshots_all', '/fluidshots')
|
||||||
config.add_route('json_fluidshots_all', '/json/fluidshots')
|
config.add_route('fluidshots_all_json', '/json/fluidshots')
|
||||||
|
|
||||||
# Well Tests
|
# Well Tests
|
||||||
config.add_route('welltests_all', '/welltests')
|
config.add_route('welltests_all', '/welltests')
|
||||||
config.add_route('json_welltests_all', '/json/welltests')
|
config.add_route('welltests_all_json', '/json/welltests')
|
||||||
|
|
||||||
# Run Status
|
# Run Status
|
||||||
config.add_route('runstatus', '/runstatus')
|
config.add_route('runstatus', '/runstatus')
|
||||||
config.add_route('json_runstatus_page', '/json/runstatus/{page_num}')
|
config.add_route('runstatus_page_json', '/json/runstatus/{page_num}')
|
||||||
config.add_route('json_runstatus', '/json/runstatus')
|
config.add_route('runstatus_json', '/json/runstatus')
|
||||||
config.add_route('json_runstatusnow', "/json/runstatusnow")
|
config.add_route('runstatus_now_json', "/json/runstatusnow")
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
config.add_route('json_config', '/json/config', factory='pocwww.security.UserLoginFactory')
|
config.add_route('config_json', '/json/config', factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route('config', '/config', factory='pocwww.security.UserLoginFactory')
|
config.add_route('config', '/config', factory='pocwww.security.UserLoginFactory')
|
||||||
|
|
||||||
# Setpoints
|
|
||||||
config.add_route('json_setpoints', '/json/setpoints', factory='pocwww.security.UserLoginFactory')
|
|
||||||
config.add_route('json_mode', '/json/mode', factory='pocwww.security.UserLoginFactory')
|
|
||||||
config.add_route('setpoints', '/setpoints', factory='pocwww.security.UserLoginFactory')
|
|
||||||
|
|
||||||
# Administration
|
# Administration
|
||||||
config.add_route('admin', '/admin', factory='pocwww.security.UserLoginFactory')
|
config.add_route('admin', '/admin', factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route('auth', '/sign/{action}')
|
|
||||||
config.add_route('register', '/register', factory='pocwww.security.UserLoginFactory')
|
# Users
|
||||||
|
config.add_route('users_auth', '/sign/{action}')
|
||||||
|
config.add_route('users_register', '/register', factory='pocwww.security.UserLoginFactory')
|
||||||
|
config.add_route("users_json", "/json/users", factory='pocwww.security.UserLoginFactory')
|
||||||
|
|
||||||
|
|
||||||
# POC Interface
|
# POC Interface
|
||||||
config.add_route("json_updateconfig", "/json/updateconfig", factory='pocwww.security.UserLoginFactory')
|
config.add_route("poc_updateconfig_json", "/json/updateconfig", factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_shake", '/json/cmd/shake', factory='pocwww.security.UserLoginFactory') # Shake command is separate for allowing all access
|
config.add_route("poc_shake_json", '/json/cmd/shake', factory='pocwww.security.UserLoginFactory') # Shake command is separate for allowing all access
|
||||||
config.add_route("json_cmd", '/json/cmd/{action}', factory='pocwww.security.UserLoginFactory')
|
config.add_route("poc_cmd_json", '/json/cmd/{action}', factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_update_poc_address", "/json/updatepocaddress", factory='pocwww.security.UserLoginFactory')
|
config.add_route("poc_updatepocaddress_json", "/json/updatepocaddress", factory='pocwww.security.UserLoginFactory')
|
||||||
|
config.add_route('poc_setpoints_json', '/json/setpoints', factory='pocwww.security.UserLoginFactory')
|
||||||
|
config.add_route('poc_mode_json', '/json/mode', factory='pocwww.security.UserLoginFactory')
|
||||||
|
config.add_route('poc_setpoints', '/setpoints', factory='pocwww.security.UserLoginFactory')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
7
pocwww/admin.py
Normal file
7
pocwww/admin.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
from pyramid.view import view_config
|
||||||
|
|
||||||
|
|
||||||
|
@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}
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
|
from datetime import datetime
|
||||||
|
from datetime import timedelta
|
||||||
|
from math import ceil
|
||||||
from .pagination import Pagination
|
from .pagination import Pagination
|
||||||
|
|
||||||
def get_all_dates_with_cards(request):
|
def get_all_dates_with_cards(request):
|
||||||
@@ -20,21 +23,21 @@ def get_all_dates_with_cards(request):
|
|||||||
datelist.append({'count': d['count'], 'date': datetime.strptime(d['_id'], "%Y-%m-%d").date()})
|
datelist.append({'count': d['count'], 'date': datetime.strptime(d['_id'], "%Y-%m-%d").date()})
|
||||||
return list(datelist)
|
return list(datelist)
|
||||||
|
|
||||||
@view_config(route_name="json_lastcard", renderer="prettyjson")
|
@view_config(route_name="cards_lastcard_json", renderer="prettyjson")
|
||||||
def json_lastcard(request):
|
def json_lastcard(request):
|
||||||
return get_latest_card(request)
|
return get_latest_card(request)
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='cards', renderer='templates/datelist.jinja2')
|
@view_config(route_name='cards', renderer='templates/datelist.jinja2')
|
||||||
@view_config(route_name='json_cards', renderer='prettyjson')
|
@view_config(route_name='cards_json', renderer='prettyjson')
|
||||||
def cards(request):
|
def cards(request):
|
||||||
return {'datelist': get_all_dates_with_cards(request), 'navgroup': 'cards'}
|
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_page', renderer='templates/cardlist.jinja2')
|
||||||
@view_config(route_name='cards_date', 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='cards_date_json', renderer='prettyjson')
|
||||||
@view_config(route_name='json_cards_page', renderer='prettyjson')
|
@view_config(route_name='cards_page_json', renderer='prettyjson')
|
||||||
def cards_page(request):
|
def cards_page(request):
|
||||||
page_num = 1
|
page_num = 1
|
||||||
try:
|
try:
|
||||||
@@ -64,8 +67,8 @@ def cards_page(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='card_single', renderer='templates/cardsingle.jinja2')
|
@view_config(route_name='cards_singlecard', renderer='templates/cardsingle.jinja2')
|
||||||
@view_config(route_name='json_card_single', renderer='prettyjson')
|
@view_config(route_name='cards_singlecard_json', renderer='prettyjson')
|
||||||
def card_single(request):
|
def card_single(request):
|
||||||
card = {}
|
card = {}
|
||||||
try:
|
try:
|
||||||
|
|||||||
7
pocwww/config.py
Normal file
7
pocwww/config.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
from pyramid.view import view_config
|
||||||
|
|
||||||
|
@view_config(route_name="config", renderer="templates/config.jinja2", permission="edit")
|
||||||
|
@view_config(route_name="config_json", 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}
|
||||||
@@ -2,7 +2,7 @@ from pyramid.view import view_config
|
|||||||
|
|
||||||
|
|
||||||
@view_config(route_name="fluidshots_all", renderer="templates/fluidshots.jinja2")
|
@view_config(route_name="fluidshots_all", renderer="templates/fluidshots.jinja2")
|
||||||
@view_config(route_name="json_fluidshots_all", renderer="prettyjson")
|
@view_config(route_name="fluidshots_all_json", renderer="prettyjson")
|
||||||
def fluidshots_all(request):
|
def fluidshots_all(request):
|
||||||
fluidshots = list(request.db['fluidShots'].find())
|
fluidshots = list(request.db['fluidShots'].find())
|
||||||
return {'navgroup': 'fluidshots', 'data': fluidshots}
|
return {'navgroup': 'fluidshots', 'data': fluidshots}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
|
|
||||||
@view_config(route_name="gaugeoff_all", renderer="templates/gaugeoff_all.jinja2")
|
@view_config(route_name="gaugeoff_all", renderer="templates/gaugeoff_all.jinja2")
|
||||||
@view_config(route_name="json_gaugeoff_all", renderer="prettyjson")
|
@view_config(route_name="gaugeoff_all_json", renderer="prettyjson")
|
||||||
def gaugeoff_all(request):
|
def gaugeoff_all(request):
|
||||||
gaugeoff_list = []
|
gaugeoff_list = []
|
||||||
dateagg = list(request.db['gaugeOff'].aggregate(
|
dateagg = list(request.db['gaugeOff'].aggregate(
|
||||||
|
|||||||
33
pocwww/home.py
Normal file
33
pocwww/home.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
from pyramid.view import view_config
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name='home', renderer='templates/dashboard.jinja2')
|
||||||
|
@view_config(route_name="home_json", renderer="prettyjson")
|
||||||
|
def my_view(request):
|
||||||
|
latest_tag_values = []
|
||||||
|
latesttag_agg = request.db['measurements'].aggregate([
|
||||||
|
{'$sort': {'dateStored': 1}},
|
||||||
|
{
|
||||||
|
'$group': {
|
||||||
|
'_id': '$tagname',
|
||||||
|
'currentValue': {'$last': '$currentValue'},
|
||||||
|
'units': {'$last': '$units'},
|
||||||
|
'maxValue': {'$last': '$maxValue'},
|
||||||
|
'minValue': {'$last': '$minValue'},
|
||||||
|
'totalValue': {'$last': '$totalValue'},
|
||||||
|
'averageValue': {'$last': '$averageValue'},
|
||||||
|
'useTotal': {'$last': '$useTotal'},
|
||||||
|
'useAverage': {'$last': '$useAverage'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
for t in latesttag_agg:
|
||||||
|
latest_tag_values.append(t)
|
||||||
|
|
||||||
|
latest_card = []
|
||||||
|
try:
|
||||||
|
latest_card = list(request.db['cards'].find().sort("timestamp", -1).limit(1))[0]
|
||||||
|
except IndexError:
|
||||||
|
latest_card = []
|
||||||
|
|
||||||
|
return {'project': 'POC Web Interface', 'navgroup': 'dashboard', 'tag_values': latest_tag_values, 'card': latest_card}
|
||||||
@@ -10,7 +10,7 @@ def get_poc_address(request):
|
|||||||
return address
|
return address
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_updateconfig", renderer="prettyjson", request_method='POST', permission="edit")
|
@view_config(route_name="poc_updateconfig_json", renderer="prettyjson", request_method='POST', permission="edit")
|
||||||
def json_updateconfig(request):
|
def json_updateconfig(request):
|
||||||
conv_to_float = [
|
conv_to_float = [
|
||||||
'deltaT',
|
'deltaT',
|
||||||
@@ -54,7 +54,7 @@ def json_updateconfig(request):
|
|||||||
return {'new_config': request.json_body, 'stored_result': result, 'updated': pocCmdSts}
|
return {'new_config': request.json_body, 'stored_result': result, 'updated': pocCmdSts}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_cmd", renderer="prettyjson", permission="edit")
|
@view_config(route_name="poc_cmd_json", renderer="prettyjson", permission="edit")
|
||||||
def json_cmd(request):
|
def json_cmd(request):
|
||||||
print("got here")
|
print("got here")
|
||||||
action = request.matchdict['action']
|
action = request.matchdict['action']
|
||||||
@@ -69,7 +69,7 @@ def json_cmd(request):
|
|||||||
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_shake", renderer="prettyjson", permission="view")
|
@view_config(route_name="poc_shake_json", renderer="prettyjson", permission="view")
|
||||||
def json_shake(request):
|
def json_shake(request):
|
||||||
address = get_poc_address(request) or 'localhost'
|
address = get_poc_address(request) or 'localhost'
|
||||||
url = "http://{}:8000/shake".format(address)
|
url = "http://{}:8000/shake".format(address)
|
||||||
@@ -78,7 +78,7 @@ def json_shake(request):
|
|||||||
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_update_poc_address", renderer="prettyjson", request_method='POST', permission="edit")
|
@view_config(route_name="poc_updatepocaddress_json", renderer="prettyjson", request_method='POST', permission="edit")
|
||||||
def json_update_poc_address(request):
|
def json_update_poc_address(request):
|
||||||
try:
|
try:
|
||||||
new_addr = request.json_body['pocIPAddress']
|
new_addr = request.json_body['pocIPAddress']
|
||||||
@@ -88,17 +88,17 @@ def json_update_poc_address(request):
|
|||||||
return {"status": "failure"}
|
return {"status": "failure"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='setpoints', renderer='templates/setpoints.jinja2', permission='edit')
|
@view_config(route_name='poc_setpoints', renderer='templates/setpoints.jinja2', permission='edit')
|
||||||
def setpoints(request):
|
def setpoints(request):
|
||||||
return {"navgroup": "setpoints"}
|
return {"navgroup": "setpoints"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_setpoints", renderer="prettyjson", request_method='GET', permission='edit')
|
@view_config(route_name="poc_setpoints_json", renderer="prettyjson", request_method='GET', permission='edit')
|
||||||
def json_setpoints(request):
|
def json_setpoints(request):
|
||||||
return {'setpoints': list(request.db['setpoints'].find())}
|
return {'setpoints': list(request.db['setpoints'].find())}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_setpoints", renderer="prettyjson", request_method='POST', permission='edit')
|
@view_config(route_name="poc_setpoints_json", renderer="prettyjson", request_method='POST', permission='edit')
|
||||||
def json_setpoints_post(request):
|
def json_setpoints_post(request):
|
||||||
jsb = request.json_body
|
jsb = request.json_body
|
||||||
try:
|
try:
|
||||||
@@ -120,7 +120,7 @@ def json_setpoints_post(request):
|
|||||||
runModes = {0: 'poc', 1: 'manual', 2: 'timer'}
|
runModes = {0: 'poc', 1: 'manual', 2: 'timer'}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_mode", renderer="prettyjson", request_method='POST', permission='edit')
|
@view_config(route_name="poc_mode_json", renderer="prettyjson", request_method='POST', permission='edit')
|
||||||
def json_mode_post(request):
|
def json_mode_post(request):
|
||||||
jsb = request.json_body
|
jsb = request.json_body
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ from math import ceil
|
|||||||
from .pagination import Pagination
|
from .pagination import Pagination
|
||||||
|
|
||||||
@view_config(route_name="runstatus", renderer="templates/runstatus.jinja2")
|
@view_config(route_name="runstatus", renderer="templates/runstatus.jinja2")
|
||||||
@view_config(route_name="json_runstatus", renderer="prettyjson")
|
@view_config(route_name="runstatus_json", renderer="prettyjson")
|
||||||
@view_config(route_name="json_runstatus_page", renderer="prettyjson")
|
@view_config(route_name="runstatus_page_json", renderer="prettyjson")
|
||||||
def run_status(request):
|
def run_status(request):
|
||||||
page_num = 1
|
page_num = 1
|
||||||
try:
|
try:
|
||||||
@@ -19,7 +19,7 @@ def run_status(request):
|
|||||||
return {'navgroup': 'runstatus', 'data': runStatuses, 'pagination': Pagination(page_num, num_per_page, num_cards)}
|
return {'navgroup': 'runstatus', 'data': runStatuses, 'pagination': Pagination(page_num, num_per_page, num_cards)}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_runstatusnow", renderer="prettyjson")
|
@view_config(route_name="runstatus_now_json", renderer="prettyjson")
|
||||||
def json_runstatusnow(request):
|
def json_runstatusnow(request):
|
||||||
status = False
|
status = False
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from pyramid.security import Allow, Everyone, Authenticated
|
from pyramid.security import Allow, Everyone, Authenticated
|
||||||
|
from passlib.apps import custom_app_context as poc_pwd_context
|
||||||
|
|
||||||
|
|
||||||
class UserLoginFactory(object):
|
class UserLoginFactory(object):
|
||||||
@@ -8,3 +9,20 @@ class UserLoginFactory(object):
|
|||||||
|
|
||||||
def __init__(self, request):
|
def __init__(self, request):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def set_password(request, username, password):
|
||||||
|
password_hash = poc_pwd_context.encrypt(password)
|
||||||
|
request.db['users'].update_one({'username': username}, {"$set":{"username": username, "password": password_hash}}, upsert=True)
|
||||||
|
|
||||||
|
|
||||||
|
def check_password(request, username, password):
|
||||||
|
users = list(request.db['users'].find({'username': username}))
|
||||||
|
if len(users) > 0:
|
||||||
|
this_user = users[0]
|
||||||
|
|
||||||
|
# is it cleartext?
|
||||||
|
if password == this_user['password']:
|
||||||
|
set_password(request, username, password)
|
||||||
|
return check_password(request, username, password)
|
||||||
|
|
||||||
|
return poc_pwd_context.verify(password, this_user['password'])
|
||||||
|
|||||||
@@ -67,9 +67,9 @@
|
|||||||
<li {% if (navgroup == 'setpoints') %}class="active"{% endif %}><a href="/setpoints">Setpoints</a></li>
|
<li {% if (navgroup == 'setpoints') %}class="active"{% endif %}><a href="/setpoints">Setpoints</a></li>
|
||||||
<li {% if (navgroup == 'config') %}class="active"{% endif %}><a href="/config">Well Setup</a></li>
|
<li {% if (navgroup == 'config') %}class="active"{% endif %}><a href="/config">Well Setup</a></li>
|
||||||
<li><a href="/register">{{request.authenticated_userid}}</a></li>
|
<li><a href="/register">{{request.authenticated_userid}}</a></li>
|
||||||
<li><form class="navbar-form"><div class="form-group"><a href="{{request.route_url('auth',action='out')}}" class="btn btn-warning">Sign Out</a></div></form></li>
|
<li><form class="navbar-form"><div class="form-group"><a href="{{request.route_url('users_auth',action='out')}}" class="btn btn-warning">Sign Out</a></div></form></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form action="{{request.route_url('auth',action='in')}}" method="post" class="form-inline navbar-form">
|
<form action="{{request.route_url('users_auth',action='in')}}" method="post" class="form-inline navbar-form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" name="username" class="form-control" placeholder="Username">
|
<input type="text" name="username" class="form-control" placeholder="Username">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
77
pocwww/users.py
Normal file
77
pocwww/users.py
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
from pyramid.view import view_config
|
||||||
|
from pyramid.httpexceptions import HTTPFound
|
||||||
|
from pyramid.security import remember, forget
|
||||||
|
from .security import check_password, set_password
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name="users_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='users_register', renderer='templates/register.jinja2', permission="edit")
|
||||||
|
def register(request):
|
||||||
|
return {"navgroup": "user"}
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name="users_json", renderer="prettyjson", request_method='POST', permission="edit")
|
||||||
|
def json_newuser(request):
|
||||||
|
jsb = request.json_body
|
||||||
|
if request.db['users'].count({"username": jsb['username']}) > 0:
|
||||||
|
fail_reason = "There is already a user with this username"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
elif len(jsb['username']) < 5:
|
||||||
|
fail_reason = "The username must be at least 5 characters"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
elif len(jsb['password']) < 5:
|
||||||
|
fail_reason = "The password must be at least 5 characters"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
else:
|
||||||
|
set_return = set_password(request, jsb['username'], jsb['password'])
|
||||||
|
return {'status': "OK"}
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name="users_json", renderer="prettyjson", permission="edit", request_method='GET')
|
||||||
|
def json_getuser(request):
|
||||||
|
user_list = []
|
||||||
|
users = list(request.db['users'].find())
|
||||||
|
for user in users:
|
||||||
|
user_list.append(user['username'])
|
||||||
|
return {'users': user_list}
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name="users_json", renderer="prettyjson", permission="edit", request_method='DELETE')
|
||||||
|
def json_deleteuser(request):
|
||||||
|
request.db['users'].remove({'username': request.json_body['username']})
|
||||||
|
user_list = []
|
||||||
|
users = list(request.db['users'].find())
|
||||||
|
for user in users:
|
||||||
|
user_list.append(user['username'])
|
||||||
|
return {'users': user_list}
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name="users_json", renderer="prettyjson", request_method='PUT', permission="edit")
|
||||||
|
def json_updateuser(request):
|
||||||
|
jsb = request.json_body
|
||||||
|
if len(jsb['username']) < 5:
|
||||||
|
fail_reason = "The username must be at least 5 characters"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
elif len(jsb['password']) < 5:
|
||||||
|
fail_reason = "The password must be at least 5 characters"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
else:
|
||||||
|
set_return = set_password(request, jsb['username'], jsb['password'])
|
||||||
|
return {'status': "OK"}
|
||||||
142
pocwww/views.py
142
pocwww/views.py
@@ -1,142 +0,0 @@
|
|||||||
from pyramid.view import view_config
|
|
||||||
from pyramid.httpexceptions import HTTPFound
|
|
||||||
from pyramid.security import remember, forget
|
|
||||||
from passlib.apps import custom_app_context as poc_pwd_context
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
from math import ceil
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='home', renderer='templates/dashboard.jinja2')
|
|
||||||
@view_config(route_name="json_snapshot", renderer="prettyjson")
|
|
||||||
def my_view(request):
|
|
||||||
latest_tag_values = []
|
|
||||||
latesttag_agg = request.db['measurements'].aggregate([
|
|
||||||
{'$sort': {'dateStored': 1}},
|
|
||||||
{
|
|
||||||
'$group': {
|
|
||||||
'_id': '$tagname',
|
|
||||||
'currentValue': {'$last': '$currentValue'},
|
|
||||||
'units': {'$last': '$units'},
|
|
||||||
'maxValue': {'$last': '$maxValue'},
|
|
||||||
'minValue': {'$last': '$minValue'},
|
|
||||||
'totalValue': {'$last': '$totalValue'},
|
|
||||||
'averageValue': {'$last': '$averageValue'},
|
|
||||||
'useTotal': {'$last': '$useTotal'},
|
|
||||||
'useAverage': {'$last': '$useAverage'}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
])
|
|
||||||
for t in latesttag_agg:
|
|
||||||
latest_tag_values.append(t)
|
|
||||||
|
|
||||||
latest_card = []
|
|
||||||
try:
|
|
||||||
latest_card = list(request.db['cards'].find().sort("timestamp", -1).limit(1))[0]
|
|
||||||
except IndexError:
|
|
||||||
latest_card = []
|
|
||||||
|
|
||||||
return {'project': 'POC Web Interface', 'navgroup': 'dashboard', 'tag_values': latest_tag_values, 'card': latest_card}
|
|
||||||
|
|
||||||
|
|
||||||
@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"}
|
|
||||||
|
|
||||||
|
|
||||||
def set_password(request, username, password):
|
|
||||||
password_hash = poc_pwd_context.encrypt(password)
|
|
||||||
request.db['users'].update_one({'username': username}, {"$set":{"username": username, "password": password_hash}}, upsert=True)
|
|
||||||
|
|
||||||
|
|
||||||
def check_password(request, username, password):
|
|
||||||
users = list(request.db['users'].find({'username': username}))
|
|
||||||
if len(users) > 0:
|
|
||||||
this_user = users[0]
|
|
||||||
|
|
||||||
# is it cleartext?
|
|
||||||
if password == this_user['password']:
|
|
||||||
set_password(request, username, password)
|
|
||||||
return check_password(request, username, password)
|
|
||||||
|
|
||||||
return poc_pwd_context.verify(password, this_user['password'])
|
|
||||||
|
|
||||||
@view_config(route_name="json_users", renderer="prettyjson", request_method='POST', permission="edit")
|
|
||||||
def json_newuser(request):
|
|
||||||
jsb = request.json_body
|
|
||||||
if request.db['users'].count({"username": jsb['username']}) > 0:
|
|
||||||
fail_reason = "There is already a user with this username"
|
|
||||||
return {"status": 'fail', "info": fail_reason}
|
|
||||||
|
|
||||||
elif len(jsb['username']) < 5:
|
|
||||||
fail_reason = "The username must be at least 5 characters"
|
|
||||||
return {"status": 'fail', "info": fail_reason}
|
|
||||||
|
|
||||||
elif len(jsb['password']) < 5:
|
|
||||||
fail_reason = "The password must be at least 5 characters"
|
|
||||||
return {"status": 'fail', "info": fail_reason}
|
|
||||||
|
|
||||||
else:
|
|
||||||
set_return = set_password(request, jsb['username'], jsb['password'])
|
|
||||||
return {'status': "OK"}
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_users", renderer="prettyjson", permission="edit", request_method='GET')
|
|
||||||
def json_getuser(request):
|
|
||||||
user_list = []
|
|
||||||
users = list(request.db['users'].find())
|
|
||||||
for user in users:
|
|
||||||
user_list.append(user['username'])
|
|
||||||
return {'users': user_list}
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_users", renderer="prettyjson", permission="edit", request_method='DELETE')
|
|
||||||
def json_deleteuser(request):
|
|
||||||
request.db['users'].remove({'username': request.json_body['username']})
|
|
||||||
user_list = []
|
|
||||||
users = list(request.db['users'].find())
|
|
||||||
for user in users:
|
|
||||||
user_list.append(user['username'])
|
|
||||||
return {'users': user_list}
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_users", renderer="prettyjson", request_method='PUT', permission="edit")
|
|
||||||
def json_updateuser(request):
|
|
||||||
jsb = request.json_body
|
|
||||||
if len(jsb['username']) < 5:
|
|
||||||
fail_reason = "The username must be at least 5 characters"
|
|
||||||
return {"status": 'fail', "info": fail_reason}
|
|
||||||
|
|
||||||
elif len(jsb['password']) < 5:
|
|
||||||
fail_reason = "The password must be at least 5 characters"
|
|
||||||
return {"status": 'fail', "info": fail_reason}
|
|
||||||
|
|
||||||
else:
|
|
||||||
set_return = set_password(request, jsb['username'], jsb['password'])
|
|
||||||
return {'status': "OK"}
|
|
||||||
@@ -2,7 +2,7 @@ from pyramid.view import view_config
|
|||||||
|
|
||||||
|
|
||||||
@view_config(route_name="welltests_all", renderer="templates/welltests.jinja2")
|
@view_config(route_name="welltests_all", renderer="templates/welltests.jinja2")
|
||||||
@view_config(route_name="json_welltests_all", renderer="prettyjson")
|
@view_config(route_name="welltests_all_json", renderer="prettyjson")
|
||||||
def welltests_all(request):
|
def welltests_all(request):
|
||||||
welltests = list(request.db['wellTests'].find())
|
welltests = list(request.db['wellTests'].find())
|
||||||
return {'navgroup': 'welltests', 'data': welltests}
|
return {'navgroup': 'welltests', 'data': welltests}
|
||||||
|
|||||||
Reference in New Issue
Block a user