diff options
author | lonkaars <l.leblansch@gmail.com> | 2021-03-15 11:39:58 +0100 |
---|---|---|
committer | lonkaars <l.leblansch@gmail.com> | 2021-03-15 11:39:58 +0100 |
commit | 1c5ee061f745b6ea1ea584a0047c99e88a5d3fcb (patch) | |
tree | a335aaea9438395a17b2d56401cf5d04b8812fc2 | |
parent | 87328fa0fc773de63ed718f3e0a40940de1be7d8 (diff) |
always send full preferences object and trim excess properties
-rw-r--r-- | api/user/preferences.py | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/api/user/preferences.py b/api/user/preferences.py index 6c8a6f3..cb3bf5e 100644 --- a/api/user/preferences.py +++ b/api/user/preferences.py @@ -1,10 +1,21 @@ from flask import Blueprint, request from db import cursor, connection from auth.login_token import token_login +from ruleset import resolve_ruleset import json -def format_preferences(preferences): #TODO: remove excess properties (create preferences class?) - return json.dumps(preferences) or "" +class preferences_class: + def __init__(self, preferences): + self.darkMode = preferences.get("darkMode") or False + self.ruleset = resolve_ruleset(json.dumps(preferences.get("ruleset") or {}) or "default") + self.userColors = { + "diskA": preferences.get("userColors", {}).get("diskA") or "", + "diskB": preferences.get("userColors", {}).get("diskB") or "", + "background": preferences.get("userColors", {}).get("background") or "" + } + +def format_preferences(prefs): + return json.dumps((preferences_class(prefs)).__dict__) preferences = Blueprint('preferences', __name__) @@ -20,7 +31,7 @@ def get_preferences(): if not login: return "", 403 user_prefs = cursor.execute("select preferences from users where user_id = ?", [login]).fetchone() - return { "preferences": json.loads(user_prefs[0]) }, 200 + return { "preferences": format_preferences(json.loads(user_prefs[0])) }, 200 @preferences.route('/preferences', methods = ["POST"]) def index(): @@ -34,8 +45,13 @@ def index(): if not login: return "", 403 - formatted_json = format_preferences(new_preferences) - if not formatted_json: return "", 400 + preferences_json = {} + try: + preferences_json = json.loads(new_preferences) + except ValueError as e: + return "", 400 + + formatted_json = format_preferences(preferences_json) cursor.execute("update users set preferences = ? where user_id = ?", [formatted_json, login]) connection.commit() |