From: Simo Sorce Date: Thu, 20 Mar 2014 21:54:18 +0000 (-0400) Subject: Add way to save user preferences X-Git-Tag: v0.2.2~59 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=commitdiff_plain;h=4de51f1b6f61f7dd5aae02da844f39822c2d9031 Add way to save user preferences Signed-off-by: Simo Sorce --- 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 = []