mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-15 01:32:57 -07:00
Merge pull request #66 from jroyal/feature-allow-custom-profile-pic
Feature allow custom profile pic
This commit is contained in:
commit
375bd733f1
4 changed files with 51 additions and 5 deletions
|
@ -37,6 +37,15 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
<p class="help-block">Replace all occurances of the username with this name.</p>
|
<p class="help-block">Replace all occurances of the username with this name.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="profile_url">Profile Picture URL</label>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<input type="text" class="form-control" id="profile_url" name="profile_url" value="${data['thumb']}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="help-block">Change the users profile picture in plexpy. You should save the URL if you would like to go back as this replaces the existing one.</p>
|
||||||
|
</div>
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" id="do_notify" name="do_notify" value="1" ${data['do_notify']}> Enable notifications
|
<input type="checkbox" id="do_notify" name="do_notify" value="1" ${data['do_notify']}> Enable notifications
|
||||||
|
@ -63,6 +72,7 @@ DOCUMENTATION :: END
|
||||||
// Set new friendly name
|
// Set new friendly name
|
||||||
$("#save_user_name").click(function() {
|
$("#save_user_name").click(function() {
|
||||||
var friendly_name = $("#friendly_name").val();
|
var friendly_name = $("#friendly_name").val();
|
||||||
|
var thumb = $("#profile_url").val();
|
||||||
var do_notify = 0;
|
var do_notify = 0;
|
||||||
var keep_history = 0;
|
var keep_history = 0;
|
||||||
if ($("#do_notify").is(":checked")) {
|
if ($("#do_notify").is(":checked")) {
|
||||||
|
@ -75,7 +85,7 @@ DOCUMENTATION :: END
|
||||||
% if data['user_id']:
|
% if data['user_id']:
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'edit_user',
|
url: 'edit_user',
|
||||||
data: {user_id: '${data['user_id']}', friendly_name: friendly_name, do_notify: do_notify, keep_history: keep_history},
|
data: {user_id: '${data['user_id']}', friendly_name: friendly_name, do_notify: do_notify, keep_history: keep_history, thumb: thumb},
|
||||||
cache: false,
|
cache: false,
|
||||||
async: true,
|
async: true,
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
|
@ -83,12 +93,13 @@ DOCUMENTATION :: END
|
||||||
if ($.trim(friendly_name) !== '') {
|
if ($.trim(friendly_name) !== '') {
|
||||||
$(".set-username").html(friendly_name);
|
$(".set-username").html(friendly_name);
|
||||||
}
|
}
|
||||||
|
$("#user-profile-thumb").attr('src', thumb);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
% else:
|
% else:
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'edit_user',
|
url: 'edit_user',
|
||||||
data: {user: '${data['user']}', friendly_name: friendly_name, do_notify: do_notify, keep_history: keep_history},
|
data: {user: '${data['user']}', friendly_name: friendly_name, do_notify: do_notify, keep_history: keep_history, thumb: thumb},
|
||||||
cache: false,
|
cache: false,
|
||||||
async: true,
|
async: true,
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
|
@ -96,6 +107,7 @@ DOCUMENTATION :: END
|
||||||
if ($.trim(friendly_name) !== '') {
|
if ($.trim(friendly_name) !== '') {
|
||||||
$(".set-username").html(friendly_name);
|
$(".set-username").html(friendly_name);
|
||||||
}
|
}
|
||||||
|
$("#user-profile-thumb").attr('src', thumb);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
% endif
|
% endif
|
||||||
|
|
|
@ -41,7 +41,7 @@ from plexpy import helpers
|
||||||
<div class="table-card-back">
|
<div class="table-card-back">
|
||||||
<div class="user-info-wrapper">
|
<div class="user-info-wrapper">
|
||||||
<div class="user-info-poster-face" id="user-gravatar">
|
<div class="user-info-poster-face" id="user-gravatar">
|
||||||
<img src="${data['thumb']}" height="80px" width="80px">
|
<img id="user-profile-thumb" src="${data['thumb']}" height="80px" width="80px">
|
||||||
</div>
|
</div>
|
||||||
<div class="user-info-username">
|
<div class="user-info-username">
|
||||||
<span class="set-username">${data['friendly_name']}</span> <span id="edit-user-tooltip" data-target="tooltip" title="Edit user details"><a href="#" data-toggle="modal" data-target="#edit-user-modal" id="toggle-edit-user-modal"><i class="fa fa-pencil"></i></a></span>
|
<span class="set-username">${data['friendly_name']}</span> <span id="edit-user-tooltip" data-target="tooltip" title="Edit user details"><a href="#" data-toggle="modal" data-target="#edit-user-modal" id="toggle-edit-user-modal"><i class="fa fa-pencil"></i></a></span>
|
||||||
|
|
|
@ -248,18 +248,45 @@ class DataFactory(object):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.debug(u"Uncaught exception %s" % e)
|
logger.debug(u"Uncaught exception %s" % e)
|
||||||
|
|
||||||
|
def set_user_profile_url(self, user=None, user_id=None, profile_url=None):
|
||||||
|
if user_id:
|
||||||
|
if profile_url.strip() == '':
|
||||||
|
profile_url = None
|
||||||
|
|
||||||
|
monitor_db = database.MonitorDatabase()
|
||||||
|
|
||||||
|
control_value_dict = {"user_id": user_id}
|
||||||
|
new_value_dict = {"thumb": profile_url}
|
||||||
|
try:
|
||||||
|
monitor_db.upsert('users', new_value_dict, control_value_dict)
|
||||||
|
except Exception, e:
|
||||||
|
logger.debug(u"Uncaught exception %s" % e)
|
||||||
|
if user:
|
||||||
|
if profile_url.strip() == '':
|
||||||
|
profile_url = None
|
||||||
|
|
||||||
|
monitor_db = database.MonitorDatabase()
|
||||||
|
|
||||||
|
control_value_dict = {"user_id": user_id}
|
||||||
|
new_value_dict = {"thumb": profile_url}
|
||||||
|
try:
|
||||||
|
monitor_db.upsert('users', new_value_dict, control_value_dict)
|
||||||
|
except Exception, e:
|
||||||
|
logger.debug(u"Uncaught exception %s" % e)
|
||||||
|
|
||||||
def get_user_friendly_name(self, user=None, user_id=None):
|
def get_user_friendly_name(self, user=None, user_id=None):
|
||||||
if user_id:
|
if user_id:
|
||||||
monitor_db = database.MonitorDatabase()
|
monitor_db = database.MonitorDatabase()
|
||||||
query = 'select username, ' \
|
query = 'select username, ' \
|
||||||
'(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END),' \
|
'(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END),' \
|
||||||
'do_notify, keep_history ' \
|
'do_notify, keep_history, thumb ' \
|
||||||
'FROM users WHERE user_id = ?'
|
'FROM users WHERE user_id = ?'
|
||||||
result = monitor_db.select(query, args=[user_id])
|
result = monitor_db.select(query, args=[user_id])
|
||||||
if result:
|
if result:
|
||||||
user_detail = {'user_id': user_id,
|
user_detail = {'user_id': user_id,
|
||||||
'user': result[0][0],
|
'user': result[0][0],
|
||||||
'friendly_name': result[0][1],
|
'friendly_name': result[0][1],
|
||||||
|
'thumb': result[0][4],
|
||||||
'do_notify': helpers.checked(result[0][2]),
|
'do_notify': helpers.checked(result[0][2]),
|
||||||
'keep_history': helpers.checked(result[0][3])
|
'keep_history': helpers.checked(result[0][3])
|
||||||
}
|
}
|
||||||
|
@ -269,19 +296,21 @@ class DataFactory(object):
|
||||||
'user': '',
|
'user': '',
|
||||||
'friendly_name': '',
|
'friendly_name': '',
|
||||||
'do_notify': '',
|
'do_notify': '',
|
||||||
|
'thumb': '',
|
||||||
'keep_history': ''}
|
'keep_history': ''}
|
||||||
return user_detail
|
return user_detail
|
||||||
elif user:
|
elif user:
|
||||||
monitor_db = database.MonitorDatabase()
|
monitor_db = database.MonitorDatabase()
|
||||||
query = 'select user_id, ' \
|
query = 'select user_id, ' \
|
||||||
'(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END),' \
|
'(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END),' \
|
||||||
'do_notify, keep_history ' \
|
'do_notify, keep_history, thumb ' \
|
||||||
'FROM users WHERE username = ?'
|
'FROM users WHERE username = ?'
|
||||||
result = monitor_db.select(query, args=[user])
|
result = monitor_db.select(query, args=[user])
|
||||||
if result:
|
if result:
|
||||||
user_detail = {'user_id': result[0][0],
|
user_detail = {'user_id': result[0][0],
|
||||||
'user': user,
|
'user': user,
|
||||||
'friendly_name': result[0][1],
|
'friendly_name': result[0][1],
|
||||||
|
'thumb': result[0][4],
|
||||||
'do_notify': helpers.checked(result[0][2]),
|
'do_notify': helpers.checked(result[0][2]),
|
||||||
'keep_history': helpers.checked(result[0][3])}
|
'keep_history': helpers.checked(result[0][3])}
|
||||||
return user_detail
|
return user_detail
|
||||||
|
@ -290,6 +319,7 @@ class DataFactory(object):
|
||||||
'user': user,
|
'user': user,
|
||||||
'friendly_name': '',
|
'friendly_name': '',
|
||||||
'do_notify': '',
|
'do_notify': '',
|
||||||
|
'thumb': '',
|
||||||
'keep_history': ''}
|
'keep_history': ''}
|
||||||
return user_detail
|
return user_detail
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,8 @@ class WebInterface(object):
|
||||||
friendly_name=friendly_name,
|
friendly_name=friendly_name,
|
||||||
do_notify=do_notify,
|
do_notify=do_notify,
|
||||||
keep_history=keep_history)
|
keep_history=keep_history)
|
||||||
|
data_factory.set_user_profile_url(user_id=user_id,
|
||||||
|
profile_url=kwargs['thumb'])
|
||||||
|
|
||||||
status_message = "Successfully updated user."
|
status_message = "Successfully updated user."
|
||||||
return status_message
|
return status_message
|
||||||
|
@ -206,6 +208,8 @@ class WebInterface(object):
|
||||||
friendly_name=friendly_name,
|
friendly_name=friendly_name,
|
||||||
do_notify=do_notify,
|
do_notify=do_notify,
|
||||||
keep_history=keep_history)
|
keep_history=keep_history)
|
||||||
|
data_factory.set_user_profile_url(user=user,
|
||||||
|
profile_url=kwargs['thumb'])
|
||||||
|
|
||||||
status_message = "Successfully updated user."
|
status_message = "Successfully updated user."
|
||||||
return status_message
|
return status_message
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue