initial commit

This commit is contained in:
herby2212 2023-04-15 23:10:23 +02:00
commit 461a78dcba
3 changed files with 34 additions and 4 deletions

View file

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

View file

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

View file

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