From ffa1331802586e687045a7f7fe27a8de368c23d1 Mon Sep 17 00:00:00 2001 From: Otger Date: Sun, 24 Apr 2016 03:21:51 +0200 Subject: [PATCH] Added missing user filtering to a pair of graphs and renamed a few things --- data/interfaces/default/graphs.html | 26 +++++++++++++------------- plexpy/graphs.py | 24 ++++++++++++++---------- plexpy/users.py | 2 +- plexpy/webserve.py | 22 +++++++++++----------- 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/data/interfaces/default/graphs.html b/data/interfaces/default/graphs.html index 310546ad..ac255643 100644 --- a/data/interfaces/default/graphs.html +++ b/data/interfaces/default/graphs.html @@ -319,8 +319,8 @@ // Initial values for graph from config var yaxis = "${config['graph_type']}"; var current_range = ${config['graph_days']}; - var current_user = undefined; var current_tab = "${'#' + config['graph_tab']}"; + var selected_user_id = undefined; $('.days').html(current_range); @@ -352,7 +352,7 @@ $.ajax({ url: "get_plays_by_date", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { var dateArray = []; @@ -379,7 +379,7 @@ $.ajax({ url: "get_plays_by_dayofweek", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_dayofweek_options.xAxis.categories = data.categories; @@ -392,7 +392,7 @@ $.ajax({ url: "get_plays_by_hourofday", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_hourofday_options.xAxis.categories = data.categories; @@ -405,7 +405,7 @@ $.ajax({ url: "get_plays_by_top_10_platforms", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_platform_options.xAxis.categories = data.categories; @@ -418,7 +418,7 @@ $.ajax({ url: "get_plays_by_top_10_users", type: 'get', - data: { time_range: time_range, y_axis: yaxis }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_user_options.xAxis.categories = data.categories; @@ -437,7 +437,7 @@ $.ajax({ url: "get_plays_by_stream_type", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { var dateArray = []; @@ -463,7 +463,7 @@ $.ajax({ url: "get_plays_by_source_resolution", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_source_resolution_options.xAxis.categories = data.categories; @@ -475,7 +475,7 @@ $.ajax({ url: "get_plays_by_stream_resolution", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_stream_resolution_options.xAxis.categories = data.categories; @@ -487,7 +487,7 @@ $.ajax({ url: "get_stream_type_by_top_10_platforms", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_platform_by_stream_type_options.xAxis.categories = data.categories; @@ -499,7 +499,7 @@ $.ajax({ url: "get_stream_type_by_top_10_users", type: 'get', - data: { time_range: time_range, y_axis: yaxis, user_id: current_user }, + data: { time_range: time_range, y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_user_by_stream_type_options.xAxis.categories = data.categories; @@ -517,7 +517,7 @@ $.ajax({ url: "get_plays_per_month", type: 'get', - data: { y_axis: yaxis, user_id: current_user }, + data: { y_axis: yaxis, user_id: selected_user_id }, dataType: "json", success: function(data) { hc_plays_by_month_options.yAxis.min = 0; @@ -589,7 +589,7 @@ // User changed $('#graph-user').on('change', function() { - current_user = $(this).val() || undefined; + selected_user_id = $(this).val() || undefined; if (current_tab == '#tabs-1') { loadGraphsTab1(current_range, yaxis); } if (current_tab == '#tabs-2') { loadGraphsTab2(current_range, yaxis); } if (current_tab == '#tabs-3') { loadGraphsTab3(yaxis); } diff --git a/plexpy/graphs.py b/plexpy/graphs.py index 410fe67b..e64bec51 100644 --- a/plexpy/graphs.py +++ b/plexpy/graphs.py @@ -424,12 +424,14 @@ class Graphs(object): 'series': [series_1_output, series_2_output, series_3_output]} return output - def get_total_plays_by_top_10_users(self, time_range='30', y_axis='plays'): + def get_total_plays_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None): monitor_db = database.MonitorDatabase() if not time_range.isdigit(): time_range = '30' + user_cond = ('AND users.user_id = %s ' % user_id) if user_id and user_id.isdigit() else '' + try: if y_axis == 'plays': query = 'SELECT ' \ @@ -440,10 +442,10 @@ class Graphs(object): 'COUNT(session_history.id) AS total_count ' \ 'FROM session_history ' \ 'JOIN users ON session_history.user_id = users.user_id ' \ - 'WHERE (datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime")) ' \ + 'WHERE (datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime")) %s' \ 'GROUP BY session_history.user_id ' \ 'ORDER BY total_count DESC ' \ - 'LIMIT 10' % time_range + 'LIMIT 10' % (time_range, user_cond) result = monitor_db.select(query) else: @@ -459,10 +461,10 @@ class Graphs(object): ' - (CASE WHEN paused_counter IS NULL THEN 0 ELSE paused_counter END) ELSE 0 END) AS total_duration ' \ 'FROM session_history ' \ 'JOIN users ON session_history.user_id = users.user_id ' \ - 'WHERE (datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime")) ' \ + 'WHERE (datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime")) %s' \ 'GROUP BY session_history.user_id ' \ 'ORDER BY total_duration DESC ' \ - 'LIMIT 10' % time_range + 'LIMIT 10' % (time_range, user_cond) result = monitor_db.select(query) except Exception as e: @@ -836,12 +838,14 @@ class Graphs(object): return output - def get_stream_type_by_top_10_users(self, time_range='30', y_axis='plays'): + def get_stream_type_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None): monitor_db = database.MonitorDatabase() if not time_range.isdigit(): time_range = '30' + user_cond = ('AND users.user_id = %s ' % user_id) if user_id and user_id.isdigit() else '' + try: if y_axis == 'plays': query = 'SELECT ' \ @@ -858,9 +862,9 @@ class Graphs(object): 'JOIN session_history_media_info ON session_history.id = session_history_media_info.id ' \ 'WHERE datetime(session_history.started, "unixepoch", "localtime") >= ' \ 'datetime("now", "-%s days", "localtime") AND ' \ - '(session_history.media_type = "episode" OR session_history.media_type = "movie" OR session_history.media_type = "track") ' \ + '(session_history.media_type = "episode" OR session_history.media_type = "movie" OR session_history.media_type = "track") %s' \ 'GROUP BY username ' \ - 'ORDER BY total_count DESC LIMIT 10' % time_range + 'ORDER BY total_count DESC LIMIT 10' % (time_range, user_cond) result = monitor_db.select(query) else: @@ -883,9 +887,9 @@ class Graphs(object): 'JOIN session_history_media_info ON session_history.id = session_history_media_info.id ' \ 'WHERE datetime(session_history.started, "unixepoch", "localtime") >= ' \ 'datetime("now", "-%s days", "localtime") AND ' \ - '(session_history.media_type = "episode" OR session_history.media_type = "movie" OR session_history.media_type = "track") ' \ + '(session_history.media_type = "episode" OR session_history.media_type = "movie" OR session_history.media_type = "track") %s' \ 'GROUP BY username ' \ - 'ORDER BY total_duration DESC LIMIT 10' % time_range + 'ORDER BY total_duration DESC LIMIT 10' % (time_range, user_cond) result = monitor_db.select(query) except Exception as e: diff --git a/plexpy/users.py b/plexpy/users.py index 2e28e6f8..1fd4d637 100644 --- a/plexpy/users.py +++ b/plexpy/users.py @@ -21,7 +21,7 @@ class Users(object): def __init__(self): pass - def get_names(self, kwargs=None): + def get_user_names(self, kwargs=None): monitor_db = database.MonitorDatabase() try: diff --git a/plexpy/webserve.py b/plexpy/webserve.py index d7c84826..e220df08 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -867,7 +867,7 @@ class WebInterface(object): def get_user_names(self, **kwargs): user_data = users.Users() - user_names = user_data.get_names(kwargs=kwargs) + user_names = user_data.get_user_names(kwargs=kwargs) cherrypy.response.headers['Content-type'] = 'application/json' return json.dumps(user_names) @@ -939,10 +939,10 @@ class WebInterface(object): @cherrypy.expose @addtoapi() - def get_plays_by_top_10_users(self, time_range='30', y_axis='plays', **kwargs): + def get_plays_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None, **kwargs): graph = graphs.Graphs() - result = graph.get_total_plays_by_top_10_users(time_range=time_range, y_axis=y_axis) + result = graph.get_total_plays_by_top_10_users(time_range=time_range, y_axis=y_axis, user_id=user_id) if result: cherrypy.response.headers['Content-type'] = 'application/json' @@ -952,10 +952,10 @@ class WebInterface(object): @cherrypy.expose @addtoapi() - def get_plays_by_stream_type(self, time_range='30', user_id=None, y_axis='plays', **kwargs): + def get_plays_by_stream_type(self, time_range='30', y_axis='plays', user_id=None, **kwargs): graph = graphs.Graphs() - result = graph.get_total_plays_per_stream_type(time_range=time_range, user_id=user_id, y_axis=y_axis) + result = graph.get_total_plays_per_stream_type(time_range=time_range, y_axis=y_axis, user_id=user_id) if result: cherrypy.response.headers['Content-type'] = 'application/json' @@ -965,10 +965,10 @@ class WebInterface(object): @cherrypy.expose @addtoapi() - def get_plays_by_source_resolution(self, time_range='30', user_id=None, y_axis='plays', **kwargs): + def get_plays_by_source_resolution(self, time_range='30', y_axis='plays', user_id=None, **kwargs): graph = graphs.Graphs() - result = graph.get_total_plays_by_source_resolution(time_range=time_range, user_id=user_id, y_axis=y_axis) + result = graph.get_total_plays_by_source_resolution(time_range=time_range, y_axis=y_axis, user_id=user_id) if result: cherrypy.response.headers['Content-type'] = 'application/json' @@ -978,10 +978,10 @@ class WebInterface(object): @cherrypy.expose @addtoapi() - def get_plays_by_stream_resolution(self, time_range='30', user_id=None, y_axis='plays', **kwargs): + def get_plays_by_stream_resolution(self, time_range='30', y_axis='plays', user_id=None, **kwargs): graph = graphs.Graphs() - result = graph.get_total_plays_by_stream_resolution(time_range=time_range, user_id=user_id, y_axis=y_axis) + result = graph.get_total_plays_by_stream_resolution(time_range=time_range, y_axis=y_axis, user_id=user_id) if result: cherrypy.response.headers['Content-type'] = 'application/json' @@ -991,10 +991,10 @@ class WebInterface(object): @cherrypy.expose @addtoapi() - def get_stream_type_by_top_10_users(self, time_range='30', y_axis='plays', **kwargs): + def get_stream_type_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None, **kwargs): graph = graphs.Graphs() - result = graph.get_stream_type_by_top_10_users(time_range=time_range, y_axis=y_axis) + result = graph.get_stream_type_by_top_10_users(time_range=time_range, y_axis=y_axis, user_id=user_id) if result: cherrypy.response.headers['Content-type'] = 'application/json'