65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from flask import flash, render_template, Blueprint, request, session
|
|
from create_db import User, get_session, get_engine
|
|
import json
|
|
|
|
|
|
bp = Blueprint('settings', __name__, url_prefix='/settings')
|
|
|
|
def get_settings(user_id):
|
|
"""get settings from db, turns it into a dict and returns it"""
|
|
Session = get_session()
|
|
with Session() as dbsession:
|
|
user = dbsession.query(User).get(user_id)
|
|
#tu rešujejo none user bug, ki se pojavi, ko na novo reg user, ni zazznan v querryju
|
|
# zdaj imamo problem clasha med globalno in lokalno spremenljivko "dbsession"
|
|
if user == None:
|
|
user = dbsession.query(User).get(user_id)
|
|
|
|
settings_db = user.settings
|
|
if settings_db == "":
|
|
#userji se zaenkrat generirajo brez settingsov aka empty string, zato dodamo te defaulte
|
|
settings_dict = {
|
|
"max_new" : 5,
|
|
"max_due" : 5,
|
|
"max_shared" : 5,
|
|
}
|
|
else:
|
|
settings_dict = json.loads(settings_db)
|
|
|
|
dbsession.close()
|
|
|
|
get_engine().dispose()
|
|
return settings_dict
|
|
|
|
|
|
@bp.route("/save_settings", methods=["GET", "POST"])
|
|
def save_settings():
|
|
"""takes a dict of settings turns it into json and updates the database with it"""
|
|
|
|
|
|
user_id = session['user_id']
|
|
username = session['username']
|
|
|
|
if request.method == "GET":
|
|
settings_old = get_settings(user_id)
|
|
return render_template("settings.html", username=username, settings=settings_old)
|
|
|
|
if request.method == "POST":
|
|
#request form stuff
|
|
settings_dict = {
|
|
"max_new" : request.form.get('max_new', False),
|
|
"max_due" : request.form.get('max_due', False),
|
|
"max_shared" : request.form.get('max_shared', False),
|
|
}
|
|
Session = get_session()
|
|
with Session() as dbsession:
|
|
settings_json = json.dumps(settings_dict)
|
|
user = dbsession.query(User).get(user_id)
|
|
|
|
user.settings = settings_json
|
|
dbsession.commit()
|
|
dbsession.close()
|
|
flash("settings updated")
|
|
get_engine().dispose()
|
|
|
|
return render_template("settings.html", username=username, settings=settings_dict) |