Splitting functions into separate files
This commit is contained in:
@@ -184,9 +184,9 @@ def main(global_config, **settings):
|
|||||||
|
|
||||||
# POC Interface
|
# POC Interface
|
||||||
config.add_route("json_updateconfig", "/json/updateconfig", factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_updateconfig", "/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("json_cmd", '/json/cmd/{action}', factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_cmd", '/json/cmd/{action}', factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_update_poc_address", "/json/updatepocaddress", factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_update_poc_address", "/json/updatepocaddress", factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_shake", '/json/cmd/shake', factory='pocwww.security.UserLoginFactory')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,24 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
from .view_helpers import *
|
from .pagination import Pagination
|
||||||
|
|
||||||
|
def get_all_dates_with_cards(request):
|
||||||
|
datelist = []
|
||||||
|
dateagg = request.db['cards'].aggregate([
|
||||||
|
{"$group": {
|
||||||
|
"_id": {"$concat": [
|
||||||
|
{"$substr": [{"$year": "$timestamp"}, 0, 4]},
|
||||||
|
"-",
|
||||||
|
{"$substr": [{"$month": "$timestamp"}, 0, 2]},
|
||||||
|
"-",
|
||||||
|
{"$substr": [{"$dayOfMonth": "$timestamp"}, 0, 2]},
|
||||||
|
]},
|
||||||
|
"count": {"$sum": 1}
|
||||||
|
}},
|
||||||
|
{"$sort": {"_id": -1}}
|
||||||
|
])
|
||||||
|
for d in dateagg:
|
||||||
|
datelist.append({'count': d['count'], 'date': datetime.strptime(d['_id'], "%Y-%m-%d").date()})
|
||||||
|
return list(datelist)
|
||||||
|
|
||||||
@view_config(route_name="json_lastcard", renderer="prettyjson")
|
@view_config(route_name="json_lastcard", renderer="prettyjson")
|
||||||
def json_lastcard(request):
|
def json_lastcard(request):
|
||||||
@@ -18,9 +36,32 @@ def cards(request):
|
|||||||
@view_config(route_name='json_cards_date', renderer='prettyjson')
|
@view_config(route_name='json_cards_date', renderer='prettyjson')
|
||||||
@view_config(route_name='json_cards_page', renderer='prettyjson')
|
@view_config(route_name='json_cards_page', renderer='prettyjson')
|
||||||
def cards_page(request):
|
def cards_page(request):
|
||||||
cp = card_page(request)
|
page_num = 1
|
||||||
cp['datelist'] = get_all_dates_with_cards(request)
|
try:
|
||||||
return cp
|
page_num = int(request.matchdict['page_num'])
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
cards_date_start = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
try:
|
||||||
|
cards_date_start = datetime.strptime(request.matchdict['cards_date'], "%Y-%m-%d")
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
cards_date_end = cards_date_start + timedelta(days=1)
|
||||||
|
|
||||||
|
num_per_page = 100
|
||||||
|
num_cards = request.db['cards'].find({'timestamp': {'$lt': cards_date_end, '$gte': cards_date_start}}).count()
|
||||||
|
pages = ceil(num_cards / num_per_page)
|
||||||
|
|
||||||
|
cards = request.db['cards'].find({'timestamp': {'$lt': cards_date_end, '$gte': cards_date_start}}).sort("timestamp", -1).skip(num_per_page * (page_num - 1)).limit(num_per_page)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'cards': list(cards),
|
||||||
|
'pagination': Pagination(page_num, num_per_page, num_cards),
|
||||||
|
'cards_date': cards_date_start.strftime("%Y-%m-%d"), 'navgroup': 'cards',
|
||||||
|
'datelist': get_all_dates_with_cards(request)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='card_single', renderer='templates/cardsingle.jinja2')
|
@view_config(route_name='card_single', renderer='templates/cardsingle.jinja2')
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
from .view_helpers import *
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="fluidshots_all", renderer="templates/fluidshots.jinja2")
|
@view_config(route_name="fluidshots_all", renderer="templates/fluidshots.jinja2")
|
||||||
|
|||||||
44
pocwww/gauge_off.py
Normal file
44
pocwww/gauge_off.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
from pyramid.view import view_config
|
||||||
|
|
||||||
|
@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}
|
||||||
@@ -1,18 +1,13 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
from .view_helpers import *
|
|
||||||
from bson import json_util
|
|
||||||
import requests
|
import requests
|
||||||
import pytz
|
from datetime import datetime
|
||||||
|
|
||||||
@view_config(route_name="json_runstatusnow", renderer="prettyjson")
|
def get_poc_address(request):
|
||||||
def json_runstatusnow(request):
|
addr_obj = list(request.db['pocConfiguration'].find({"_id": "pocIPAddress"}))
|
||||||
status = False
|
address = False
|
||||||
try:
|
if len(addr_obj) > 0:
|
||||||
status = list(request.db['runStatus'].find().sort("timestamp", -1).limit(1))[0]
|
address = addr_obj[0]['pocIPAddress']
|
||||||
except IndexError:
|
return address
|
||||||
pass
|
|
||||||
|
|
||||||
return {'runstatus': status}
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_updateconfig", renderer="prettyjson", request_method='POST', permission="edit")
|
@view_config(route_name="json_updateconfig", renderer="prettyjson", request_method='POST', permission="edit")
|
||||||
@@ -61,13 +56,14 @@ def json_updateconfig(request):
|
|||||||
|
|
||||||
@view_config(route_name="json_cmd", renderer="prettyjson", permission="edit")
|
@view_config(route_name="json_cmd", renderer="prettyjson", permission="edit")
|
||||||
def json_cmd(request):
|
def json_cmd(request):
|
||||||
|
print("got here")
|
||||||
action = request.matchdict['action']
|
action = request.matchdict['action']
|
||||||
address = get_poc_address(request) or 'localhost'
|
address = get_poc_address(request) or 'localhost'
|
||||||
|
|
||||||
java_url = {}
|
java_url = {}
|
||||||
java_url['start'] = "http://{}:8000/command?cmd=start&user={}".format(address, request.authenticated_userid)
|
java_url['start'] = "http://{}:8000/command?cmd=start&user={}".format(address, request.authenticated_userid)
|
||||||
java_url['stop'] = "http://{}:8000/command?cmd=stop&user={}".format(address, request.authenticated_userid)
|
java_url['stop'] = "http://{}:8000/command?cmd=stop&user={}".format(address, request.authenticated_userid)
|
||||||
java_url['shake'] = "http://{}:8000/shake".format(address)
|
# java_url['shake'] = "http://{}:8000/shake".format(address)
|
||||||
|
|
||||||
r = requests.get(java_url[action])
|
r = requests.get(java_url[action])
|
||||||
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"}
|
||||||
@@ -92,59 +88,9 @@ def json_update_poc_address(request):
|
|||||||
return {"status": "failure"}
|
return {"status": "failure"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_users", renderer="prettyjson", request_method='POST', permission="edit")
|
@view_config(route_name='setpoints', renderer='templates/setpoints.jinja2', permission='edit')
|
||||||
def json_newuser(request):
|
def setpoints(request):
|
||||||
jsb = request.json_body
|
return {"navgroup": "setpoints"}
|
||||||
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"}
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_setpoints", renderer="prettyjson", request_method='GET', permission='edit')
|
@view_config(route_name="json_setpoints", renderer="prettyjson", request_method='GET', permission='edit')
|
||||||
30
pocwww/run_status.py
Normal file
30
pocwww/run_status.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
from pyramid.view import view_config
|
||||||
|
from math import ceil
|
||||||
|
from .pagination import Pagination
|
||||||
|
|
||||||
|
@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="json_runstatusnow", renderer="prettyjson")
|
||||||
|
def json_runstatusnow(request):
|
||||||
|
status = False
|
||||||
|
try:
|
||||||
|
status = list(request.db['runStatus'].find().sort("timestamp", -1).limit(1))[0]
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return {'runstatus': status}
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
from datetime import datetime, timedelta
|
|
||||||
from math import ceil
|
|
||||||
from passlib.apps import custom_app_context as poc_pwd_context
|
|
||||||
from dateutil import tz
|
|
||||||
from .pagination import Pagination
|
|
||||||
|
|
||||||
from_zone = tz.tzutc()
|
|
||||||
to_zone = tz.tzlocal()
|
|
||||||
|
|
||||||
|
|
||||||
def card_page(request):
|
|
||||||
page_num = 1
|
|
||||||
try:
|
|
||||||
page_num = int(request.matchdict['page_num'])
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
cards_date_start = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
|
||||||
try:
|
|
||||||
cards_date_start = datetime.strptime(request.matchdict['cards_date'], "%Y-%m-%d")
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
cards_date_end = cards_date_start + timedelta(days=1)
|
|
||||||
|
|
||||||
num_per_page = 100
|
|
||||||
num_cards = request.db['cards'].find({'timestamp': {'$lt': cards_date_end, '$gte': cards_date_start}}).count()
|
|
||||||
pages = ceil(num_cards / num_per_page)
|
|
||||||
|
|
||||||
cards = request.db['cards'].find({'timestamp': {'$lt': cards_date_end, '$gte': cards_date_start}}).sort("timestamp", -1).skip(num_per_page * (page_num - 1)).limit(num_per_page)
|
|
||||||
return {'cards': list(cards), 'pagination': Pagination(page_num, num_per_page, num_cards), 'cards_date': cards_date_start.strftime("%Y-%m-%d"), 'navgroup': 'cards'}
|
|
||||||
|
|
||||||
|
|
||||||
def get_all_dates_with_cards(request):
|
|
||||||
datelist = []
|
|
||||||
dateagg = request.db['cards'].aggregate([
|
|
||||||
{"$group": {
|
|
||||||
"_id": {"$concat": [
|
|
||||||
{"$substr": [{"$year": "$timestamp"}, 0, 4]},
|
|
||||||
"-",
|
|
||||||
{"$substr": [{"$month": "$timestamp"}, 0, 2]},
|
|
||||||
"-",
|
|
||||||
{"$substr": [{"$dayOfMonth": "$timestamp"}, 0, 2]},
|
|
||||||
]},
|
|
||||||
"count": {"$sum": 1}
|
|
||||||
}},
|
|
||||||
{"$sort": {"_id": -1}}
|
|
||||||
])
|
|
||||||
for d in dateagg:
|
|
||||||
datelist.append({'count': d['count'], 'date': datetime.strptime(d['_id'], "%Y-%m-%d").date()})
|
|
||||||
return list(datelist)
|
|
||||||
|
|
||||||
|
|
||||||
def get_poc_address(request):
|
|
||||||
addr_obj = list(request.db['pocConfiguration'].find({"_id": "pocIPAddress"}))
|
|
||||||
address = False
|
|
||||||
if len(addr_obj) > 0:
|
|
||||||
address = addr_obj[0]['pocIPAddress']
|
|
||||||
return address
|
|
||||||
|
|
||||||
|
|
||||||
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'])
|
|
||||||
136
pocwww/views.py
136
pocwww/views.py
@@ -1,9 +1,9 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
from pyramid.httpexceptions import HTTPFound
|
from pyramid.httpexceptions import HTTPFound
|
||||||
from pyramid.security import remember, forget
|
from pyramid.security import remember, forget
|
||||||
|
from passlib.apps import custom_app_context as poc_pwd_context
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from math import ceil
|
from math import ceil
|
||||||
from .view_helpers import *
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='home', renderer='templates/dashboard.jinja2')
|
@view_config(route_name='home', renderer='templates/dashboard.jinja2')
|
||||||
@@ -38,67 +38,6 @@ def my_view(request):
|
|||||||
return {'project': 'POC Web Interface', 'navgroup': 'dashboard', 'tag_values': latest_tag_values, 'card': latest_card}
|
return {'project': 'POC Web Interface', 'navgroup': 'dashboard', 'tag_values': latest_tag_values, 'card': latest_card}
|
||||||
|
|
||||||
|
|
||||||
@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="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="config", renderer="templates/config.jinja2", permission="edit")
|
||||||
@view_config(route_name="json_config", renderer="prettyjson", permission="edit")
|
@view_config(route_name="json_config", renderer="prettyjson", permission="edit")
|
||||||
def well_config(request):
|
def well_config(request):
|
||||||
@@ -131,6 +70,73 @@ def register(request):
|
|||||||
return {"navgroup": "user"}
|
return {"navgroup": "user"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='setpoints', renderer='templates/setpoints.jinja2', permission='edit')
|
def set_password(request, username, password):
|
||||||
def setpoints(request):
|
password_hash = poc_pwd_context.encrypt(password)
|
||||||
return {"navgroup": "setpoints"}
|
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"}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
from .view_helpers import *
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="welltests_all", renderer="templates/welltests.jinja2")
|
@view_config(route_name="welltests_all", renderer="templates/welltests.jinja2")
|
||||||
|
|||||||
Reference in New Issue
Block a user