From e0f395f2ed51d0b9774534fd7e282a87823bcc45 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Mon, 7 Sep 2015 15:07:46 -0700 Subject: [PATCH] Add show/hide user toggle to database --- data/interfaces/default/js/tables/users.js | 9 ++- plexpy/__init__.py | 69 ++++++++++++---------- plexpy/users.py | 14 +++-- plexpy/webserve.py | 10 +++- 4 files changed, 63 insertions(+), 39 deletions(-) diff --git a/data/interfaces/default/js/tables/users.js b/data/interfaces/default/js/tables/users.js index 0e9719db..9bce6b76 100644 --- a/data/interfaces/default/js/tables/users.js +++ b/data/interfaces/default/js/tables/users.js @@ -24,9 +24,9 @@ users_list_table_options = { "createdCell": function (td, cellData, rowData, row, col) { $(td).html('
   ' + ' ' + - ' '); + ' ' + // Show/hide user currently doesn't work - //''); + ''); }, "width": "7%", "className": "edit-control no-wrap hidden", @@ -246,12 +246,16 @@ $('#users_list_table').on('change', 'td.edit-control > .edit-user-toggles > inpu var do_notify = 0; var keep_history = 0; + var show_user = 0; if ($('#do_notify-' + rowData['user_id']).is(':checked')) { do_notify = 1; } if ($('#keep_history-' + rowData['user_id']).is(':checked')) { keep_history = 1; } + if ($('#show_user-' + rowData['user_id']).is(':checked')) { + show_user = 1; + } friendly_name = tr.find('td.edit-user-control > .edit-user-name > input').val(); @@ -262,6 +266,7 @@ $('#users_list_table').on('change', 'td.edit-control > .edit-user-toggles > inpu friendly_name: friendly_name, do_notify: do_notify, keep_history: keep_history, + show_user: show_user, thumb: rowData['user_thumb'] }, cache: false, diff --git a/plexpy/__init__.py b/plexpy/__init__.py index ad02333c..77842449 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -388,7 +388,15 @@ def dbcheck(): 'user_id INTEGER DEFAULT NULL UNIQUE, username TEXT NOT NULL UNIQUE, ' 'friendly_name TEXT, thumb TEXT, email TEXT, is_home_user INTEGER DEFAULT NULL, ' 'is_allow_sync INTEGER DEFAULT NULL, is_restricted INTEGER DEFAULT NULL, do_notify INTEGER DEFAULT 1, ' - 'keep_history INTEGER DEFAULT 1, custom_avatar_url TEXT)' + 'keep_history INTEGER DEFAULT 1, custom_avatar_url TEXT, show_user INTEGER DEFAULT 1)' + ) + + # notify_log table :: This is a table which logs notifications sent + c_db.execute( + 'CREATE TABLE IF NOT EXISTS notify_log (id INTEGER PRIMARY KEY AUTOINCREMENT, ' + 'session_key INTEGER, rating_key INTEGER, user_id INTEGER, user TEXT, ' + 'agent_id INTEGER, agent_name TEXT, on_play INTEGER, on_stop INTEGER, on_watched INTEGER, ' + 'on_pause INTEGER, on_resume INTEGER, on_buffer INTEGER)' ) # Upgrade sessions table from earlier versions @@ -517,6 +525,18 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN transcode_height INTEGER' ) + # Upgrade sessions table from earlier versions + try: + c_db.execute('SELECT buffer_count from sessions') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table sessions.") + c_db.execute( + 'ALTER TABLE sessions ADD COLUMN buffer_count INTEGER DEFAULT 0' + ) + c_db.execute( + 'ALTER TABLE sessions ADD COLUMN buffer_last_triggered INTEGER' + ) + # Upgrade session_history_metadata table from earlier versions try: c_db.execute('SELECT full_title from session_history_metadata') @@ -535,14 +555,6 @@ def dbcheck(): 'ALTER TABLE session_history_metadata ADD COLUMN tagline TEXT' ) - # notify_log table :: This is a table which logs notifications sent - c_db.execute( - 'CREATE TABLE IF NOT EXISTS notify_log (id INTEGER PRIMARY KEY AUTOINCREMENT, ' - 'session_key INTEGER, rating_key INTEGER, user_id INTEGER, user TEXT, ' - 'agent_id INTEGER, agent_name TEXT, on_play INTEGER, on_stop INTEGER, on_watched INTEGER, ' - 'on_pause INTEGER, on_resume INTEGER, on_buffer INTEGER)' - ) - # Upgrade users table from earlier versions try: c_db.execute('SELECT do_notify from users') @@ -561,6 +573,24 @@ def dbcheck(): 'ALTER TABLE users ADD COLUMN keep_history INTEGER DEFAULT 1' ) + # Upgrade users table from earlier versions + try: + c_db.execute('SELECT custom_avatar_url from users') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table users.") + c_db.execute( + 'ALTER TABLE users ADD COLUMN custom_avatar_url TEXT' + ) + + # Upgrade users table from earlier versions + try: + c_db.execute('SELECT show_user from users') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table users.") + c_db.execute( + 'ALTER TABLE users ADD COLUMN show_user INTEGER DEFAULT 1' + ) + # Upgrade notify_log table from earlier versions try: c_db.execute('SELECT on_pause from notify_log') @@ -576,27 +606,6 @@ def dbcheck(): 'ALTER TABLE notify_log ADD COLUMN on_buffer INTEGER' ) - # Upgrade sessions table from earlier versions - try: - c_db.execute('SELECT buffer_count from sessions') - except sqlite3.OperationalError: - logger.debug(u"Altering database. Updating database table sessions.") - c_db.execute( - 'ALTER TABLE sessions ADD COLUMN buffer_count INTEGER DEFAULT 0' - ) - c_db.execute( - 'ALTER TABLE sessions ADD COLUMN buffer_last_triggered INTEGER' - ) - - # Upgrade users table from earlier versions - try: - c_db.execute('SELECT custom_avatar_url from users') - except sqlite3.OperationalError: - logger.debug(u"Altering database. Updating database table users.") - c_db.execute( - 'ALTER TABLE users ADD COLUMN custom_avatar_url TEXT' - ) - # Add "Local" user to database as default unauthenticated user. result = c_db.execute('SELECT id FROM users WHERE username = "Local"') if not result.fetchone(): diff --git a/plexpy/users.py b/plexpy/users.py index 26f46abf..79f76bf0 100644 --- a/plexpy/users.py +++ b/plexpy/users.py @@ -42,7 +42,8 @@ class Users(object): 'session_history_media_info.video_decision', 'users.username as user', 'users.do_notify as do_notify', - 'users.keep_history as keep_history' + 'users.keep_history as keep_history', + 'users.show_user as show_user' ] try: query = data_tables.ssp_query(table_name='users', @@ -98,7 +99,8 @@ class Users(object): "user": item["user"], "user_id": item['user_id'], "do_notify": helpers.checked(item['do_notify']), - "keep_history": helpers.checked(item['keep_history']) + "keep_history": helpers.checked(item['keep_history']), + "show_user": helpers.checked(item['show_user']) } rows.append(row) @@ -193,7 +195,7 @@ class Users(object): return dict # TODO: The getter and setter for this needs to become a config getter/setter for more than just friendlyname - def set_user_friendly_name(self, user=None, user_id=None, friendly_name=None, do_notify=0, keep_history=1): + def set_user_friendly_name(self, user=None, user_id=None, friendly_name=None, do_notify=0, keep_history=1, show_user=1): if user_id: if friendly_name.strip() == '': friendly_name = None @@ -203,7 +205,8 @@ class Users(object): control_value_dict = {"user_id": user_id} new_value_dict = {"friendly_name": friendly_name, "do_notify": do_notify, - "keep_history": keep_history} + "keep_history": keep_history, + "show_user": show_user} try: monitor_db.upsert('users', new_value_dict, control_value_dict) except Exception, e: @@ -217,7 +220,8 @@ class Users(object): control_value_dict = {"username": user} new_value_dict = {"friendly_name": friendly_name, "do_notify": do_notify, - "keep_history": keep_history} + "keep_history": keep_history, + "show_user": show_user} try: monitor_db.upsert('users', new_value_dict, control_value_dict) except Exception, e: diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 5d2ba311..c5a49c5d 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -194,6 +194,10 @@ class WebInterface(object): keep_history = kwargs.get('keep_history') else: keep_history = 0 + if 'show_user' in kwargs: + show_user = kwargs.get('show_user') + else: + show_user = 0 if 'thumb' in kwargs: custom_avatar = kwargs['thumb'] else: @@ -205,7 +209,8 @@ class WebInterface(object): user_data.set_user_friendly_name(user_id=user_id, friendly_name=friendly_name, do_notify=do_notify, - keep_history=keep_history) + keep_history=keep_history, + show_user=show_user) user_data.set_user_profile_url(user_id=user_id, profile_url=custom_avatar) @@ -219,7 +224,8 @@ class WebInterface(object): user_data.set_user_friendly_name(user=user, friendly_name=friendly_name, do_notify=do_notify, - keep_history=keep_history) + keep_history=keep_history, + show_user=show_user) user_data.set_user_profile_url(user=user, profile_url=custom_avatar)