from flask import flash, render_template, Blueprint, request, session
from create_db import User, get_session
import json


bp = Blueprint('settings', __name__, url_prefix='/settings')

def get_settings(user_id):
    dbsession = get_session()
    """get settings from db, turns it into a dict and returns it"""

    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:
        print("user je bil none")
        dbsession = get_session()
        user = dbsession.query(User).get(user_id)
        print("User je: ", user)
    
    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)
    
    print("this is it: ", settings_dict)
    return settings_dict


@bp.route("/save_settings", methods=["GET", "POST"])
def save_settings():
    dbsession = get_session()

    """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":
        print('this is the form ', request.form)
        
        #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),
        }

        print('this is the dict: ', settings_dict)
        settings_json = json.dumps(settings_dict)
        print('this is the json: ', settings_json)
        user = dbsession.query(User).get(user_id)
        
        user.settings = settings_json
        dbsession.commit()
        dbsession.close()
        flash("settings updated")
        
    return render_template("settings.html", username=username, settings=settings_dict)