mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-22 14:13:40 -07:00
initial commit
This commit is contained in:
parent
3c996f01a9
commit
461a78dcba
3 changed files with 34 additions and 4 deletions
|
@ -560,6 +560,14 @@ DOCUMENTATION :: END
|
|||
<div class="table-card-header">
|
||||
<div class="header-bar">
|
||||
<span><i class="fa fa-group"></i> User Stats</span>
|
||||
% if _session['user_group'] == 'admin':
|
||||
<div class="form-check-reverse form-switch">
|
||||
% else:
|
||||
<div class="form-check-reverse form-switch" hidden>
|
||||
% endif
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="switch-show-all-users">
|
||||
<label class="form-check-label" for="switch-show-all-users">Show All Users</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-card-back">
|
||||
|
@ -940,7 +948,7 @@ DOCUMENTATION :: END
|
|||
$.ajax({
|
||||
url: 'item_user_stats',
|
||||
async: true,
|
||||
data: { rating_key: "${data['rating_key']}" },
|
||||
data: { rating_key: "${data['rating_key']}", show_all_users: $('#switch-show-all-users').prop('checked') },
|
||||
complete: function(xhr, status) {
|
||||
$("#user-stats").html(xhr.responseText);
|
||||
}
|
||||
|
@ -1018,6 +1026,18 @@ DOCUMENTATION :: END
|
|||
</script>
|
||||
% if _session['user_group'] == 'admin':
|
||||
<script>
|
||||
$('#switch-show-all-users').on('change', function() {
|
||||
// Refresh user stats
|
||||
$.ajax({
|
||||
url: 'item_user_stats',
|
||||
async: true,
|
||||
data: { rating_key: "${data['rating_key']}", show_all_users: $('#switch-show-all-users').prop('checked') },
|
||||
complete: function(xhr, status) {
|
||||
$("#user-stats").html(xhr.responseText);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#toggle-export-modal").click(function() {
|
||||
$.ajax({
|
||||
url: 'export_metadata_modal',
|
||||
|
|
|
@ -1213,7 +1213,7 @@ class DataFactory(object):
|
|||
|
||||
return item_watch_time_stats
|
||||
|
||||
def get_user_stats(self, rating_key=None, grouping=None):
|
||||
def get_user_stats(self, rating_key=None, grouping=None, **kwargs):
|
||||
if grouping is None:
|
||||
grouping = plexpy.CONFIG.GROUP_HISTORY_TABLES
|
||||
|
||||
|
@ -1248,6 +1248,16 @@ class DataFactory(object):
|
|||
logger.warn("Tautulli Libraries :: Unable to execute database query for get_user_stats: %s." % e)
|
||||
result = []
|
||||
|
||||
if kwargs['show_all_users'] == 'true':
|
||||
users_to_exlude = '(0,' + ','.join([str(x['user_id']) for x in result]) + ')'
|
||||
|
||||
query = 'SELECT (CASE WHEN users.friendly_name IS NULL OR TRIM(users.friendly_name) = "" ' \
|
||||
'THEN users.username ELSE users.friendly_name END) AS friendly_name, ' \
|
||||
'users.user_id, users.username, users.thumb, users.custom_avatar_url AS custom_thumb, ' \
|
||||
'0 AS total_plays, 0 AS total_time, -1 AS section_id ' \
|
||||
'FROM users WHERE NOT user_id IN %s' % users_to_exlude
|
||||
result.extend(monitor_db.select(query))
|
||||
|
||||
for item in result:
|
||||
section_ids.add(item['section_id'])
|
||||
|
||||
|
@ -1267,7 +1277,7 @@ class DataFactory(object):
|
|||
}
|
||||
user_stats.append(row)
|
||||
|
||||
if any(not session.allow_session_library(section_id) for section_id in section_ids):
|
||||
if any(not session.allow_session_library(section_id) for section_id in section_ids if section_id != -1):
|
||||
return []
|
||||
|
||||
return session.mask_session_info(user_stats, mask_metadata=False)
|
||||
|
|
|
@ -4449,7 +4449,7 @@ class WebInterface(object):
|
|||
def item_user_stats(self, rating_key=None, **kwargs):
|
||||
if rating_key:
|
||||
item_data = datafactory.DataFactory()
|
||||
result = item_data.get_user_stats(rating_key=rating_key)
|
||||
result = item_data.get_user_stats(rating_key=rating_key, **kwargs)
|
||||
else:
|
||||
result = None
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue