From 441bca2319f66a7fd79f350e45fdc5f018e9f2e7 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sun, 28 Feb 2016 15:52:09 +0100 Subject: Add experiments column to codeq_user This JSON column holds an array of experiment objects, for example: [{'id': 'prolog_hints', 'group': 'manual_hints'}]. To include users in an experiment, just add appropriate objects to their records. Not the cleanest design from the DB point of view, but enough for the single current use case. --- server/user_session.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'server') diff --git a/server/user_session.py b/server/user_session.py index af28046..7860022 100644 --- a/server/user_session.py +++ b/server/user_session.py @@ -86,7 +86,7 @@ class UserSession(object): try: cur = conn.cursor() try: - cur.execute('select id, password, name, email, is_admin, date_joined, gui_lang, robot_address, gui_layout from codeq_user where username = %s', (username,)) + cur.execute('select id, password, name, email, is_admin, date_joined, gui_lang, robot_address, gui_layout, experiments from codeq_user where username = %s', (username,)) row = cur.fetchone() if row is None: raise AuthenticationFailed('No such user: {}'.format(username)) @@ -96,6 +96,7 @@ class UserSession(object): self.username = username self.is_admin = row[4] self.settings = {'gui_lang': row[6], 'robot_address': row[7], 'gui_layout': row[8]} + self.experiments = row[9] if row[9] else [] return row[2], row[3], row[4], row[5], now else: raise AuthenticationFailed('Password mismatch') @@ -253,6 +254,10 @@ class UserSession(object): with self._access_lock: # settings are mutable, so we need a locked access return self.settings + def get_experiments(self): + with self._access_lock: + return self.experiments + def update_settings(self, new_settings): with self._access_lock: self.settings.update(new_settings) -- cgit v1.2.1