Merge pull request #66 from jroyal/feature-allow-custom-profile-pic

Feature allow custom profile pic
This commit is contained in:
drzoidberg33 2015-08-15 15:59:02 +02:00
commit 375bd733f1
4 changed files with 51 additions and 5 deletions

View file

@ -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

View file

@ -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>

View file

@ -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

View file

@ -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