From 4de51f1b6f61f7dd5aae02da844f39822c2d9031 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Thu, 20 Mar 2014 17:54:18 -0400 Subject: [PATCH] Add way to save user preferences Signed-off-by: Simo Sorce --- ipsilon/util/data.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ipsilon/util/data.py b/ipsilon/util/data.py index 8d6ae11..ec32b43 100755 --- a/ipsilon/util/data.py +++ b/ipsilon/util/data.py @@ -118,6 +118,39 @@ class Store(object): def get_user_preferences(self, user): return self._load_user_prefs(self._user_dbname, user) + def save_user_preferences(self, user, options): + SELECT = "SELECT option, value FROM users WHERE name=?" + UPDATE = "UPDATE users SET value=? WHERE name=? AND option=?" + INSERT = "INSERT INTO users VALUES(?,?,?)" + con = None + try: + con = sqlite3.connect(self._user_dbname) + cur = con.cursor() + cur.execute(""" + CREATE TABLE IF NOT EXISTS users(name TEXT, + option TEXT, + value TEXT) + """) + curvals = dict() + for row in cur.execute(SELECT, (user,)): + curvals[row[0]] = row[1] + + for name in options: + if name in curvals: + cur.execute(UPDATE, (options[name], user, name)) + else: + cur.execute(INSERT, (user, name, options[name])) + + con.commit() + except sqlite3.Error, e: + if con: + con.rollback() + cherrypy.log.error("Failed to store config: [%s]" % e) + raise + finally: + if con: + con.close() + def get_plugins_config(self, facility): con = None rows = [] -- 2.20.1