|
|
|
|
@ -9,10 +9,12 @@ mydir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
|
mydir = os.path.join(mydir, '../')
|
|
|
|
|
# print(mydir)
|
|
|
|
|
|
|
|
|
|
essentials = {'type': None, 'height': None, 'width': None, 'posX': None, 'posY': None}
|
|
|
|
|
essentials = {'type': None, 'height': None,
|
|
|
|
|
'width': None, 'posX': None, 'posY': None}
|
|
|
|
|
trello_options = {'board': None, 'list': None}
|
|
|
|
|
image_options = {'filename': None, 'scaleMode': None, 'bwStyle': None}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def convert(input):
|
|
|
|
|
if isinstance(input, dict):
|
|
|
|
|
return dict((convert(key), convert(value)) for key, value in input.iteritems())
|
|
|
|
|
@ -25,18 +27,25 @@ def convert(input):
|
|
|
|
|
|
|
|
|
|
# HOMEPAGE
|
|
|
|
|
@app.route('/home', methods=['GET', 'POST'])
|
|
|
|
|
def home():
|
|
|
|
|
def home(): # Toml config passed to html page via two dicts.
|
|
|
|
|
# Form data passed back to webserver as JSON.
|
|
|
|
|
config = read_config()
|
|
|
|
|
widgLists, sysList = prep_dict_for_web(config)
|
|
|
|
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
jsonData = request.get_json()
|
|
|
|
|
print(jsonData)
|
|
|
|
|
jsonData = convert(jsonData)
|
|
|
|
|
|
|
|
|
|
# update system variables
|
|
|
|
|
for key in sysList:
|
|
|
|
|
if request.form[key]:
|
|
|
|
|
if isInt(request.form[key]):
|
|
|
|
|
print("%" + jsonData[key] + "$")
|
|
|
|
|
if jsonData[key]:
|
|
|
|
|
if isInt(jsonData[key]):
|
|
|
|
|
#print(request.form[key] + " is int")
|
|
|
|
|
sysList[key] = int(request.form[key])
|
|
|
|
|
sysList[key] = int(jsonData[key])
|
|
|
|
|
else:
|
|
|
|
|
sysList[key] = request.form[key]
|
|
|
|
|
sysList[key] = jsonData[key]
|
|
|
|
|
# update widget variables
|
|
|
|
|
# for i in range(len(widgLists)):
|
|
|
|
|
# for key in widgLists[i]:
|
|
|
|
|
@ -45,19 +54,18 @@ def home():
|
|
|
|
|
for i in range(len(widgLists)):
|
|
|
|
|
for key in widgLists[i]:
|
|
|
|
|
# print(request.form[key+str(i)])
|
|
|
|
|
if isInt(request.form[key+str(i)]):
|
|
|
|
|
if jsonData[key + str(i)]:
|
|
|
|
|
if isInt(jsonData[key + str(i)]):
|
|
|
|
|
#print(request.form[key+str(i)] + " is int")
|
|
|
|
|
widgLists[i][key] = int(request.form[key+str(i)])
|
|
|
|
|
widgLists[i][key] = int(jsonData[key + str(i)])
|
|
|
|
|
else:
|
|
|
|
|
widgLists[i][key] = request.form[key+str(i)]
|
|
|
|
|
|
|
|
|
|
#print(widgLists)
|
|
|
|
|
#print(sysList)
|
|
|
|
|
widgLists[i][key] = jsonData[key + str(i)]
|
|
|
|
|
|
|
|
|
|
update_config(widgLists, sysList)
|
|
|
|
|
|
|
|
|
|
return render_template('home.html', title='Overview', widgLists=widgLists, sysList=sysList)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def isInt(s):
|
|
|
|
|
try:
|
|
|
|
|
int(s)
|
|
|
|
|
@ -65,6 +73,7 @@ def isInt(s):
|
|
|
|
|
except ValueError:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def prep_dict_for_web(config):
|
|
|
|
|
widgLists = config['widgets'] # list of dicts
|
|
|
|
|
sysList = {} # dict
|
|
|
|
|
@ -73,6 +82,7 @@ def prep_dict_for_web(config):
|
|
|
|
|
sysList[key] = config[key]
|
|
|
|
|
return widgLists, sysList
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def read_config():
|
|
|
|
|
uni_config = toml.load(os.path.join(mydir, 'config.toml'))
|
|
|
|
|
config = convert(uni_config)
|
|
|
|
|
@ -84,6 +94,7 @@ def read_config():
|
|
|
|
|
# ], 'cellsHeight': 3, 'resHeight': 384, 'resWidth': 640, 'cellsWidth': 3}
|
|
|
|
|
return config
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_config(widgLists, sysList):
|
|
|
|
|
config = {'widgets': widgLists}
|
|
|
|
|
for key in sysList:
|
|
|
|
|
@ -93,5 +104,6 @@ def update_config(widgLists, sysList):
|
|
|
|
|
with open(path, "w+") as config_file:
|
|
|
|
|
config_file.write(toml.dumps(config))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
app.run(debug=True, host='0.0.0.0')
|