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)