diff --git a/plexpy/helpers.py b/plexpy/helpers.py index 7ea6d86e..53a71a7c 100644 --- a/plexpy/helpers.py +++ b/plexpy/helpers.py @@ -1290,8 +1290,10 @@ def mask_config_passwords(config): return config -def bool_true(value): - if value is True or value == 1: +def bool_true(value, return_none=False): + if value is None and return_none: + return None + elif value is True or value == 1: return True elif isinstance(value, str) and value.lower() in ('1', 'true', 't', 'yes', 'y', 'on'): return True diff --git a/plexpy/webserve.py b/plexpy/webserve.py index f0dfd2a4..3782ad70 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -528,6 +528,8 @@ class WebInterface(object): ("duration", True, False)] kwargs['json_data'] = build_datatables_json(kwargs, dt_columns, "section_name") + grouping = helpers.bool_true(grouping, return_none=True) + library_data = libraries.Libraries() library_list = library_data.get_datatables_list(kwargs=kwargs, grouping=grouping) @@ -928,7 +930,7 @@ class WebInterface(object): ] ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) if section_id: library_data = libraries.Libraries() @@ -971,7 +973,7 @@ class WebInterface(object): ] ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) if section_id: library_data = libraries.Libraries() @@ -1195,6 +1197,8 @@ class WebInterface(object): ("duration", True, False)] kwargs['json_data'] = build_datatables_json(kwargs, dt_columns, "friendly_name") + grouping = helpers.bool_true(grouping, return_none=True) + user_data = users.Users() user_list = user_data.get_datatables_list(kwargs=kwargs, grouping=grouping) @@ -1545,7 +1549,7 @@ class WebInterface(object): ] ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) if user_id: user_data = users.Users() @@ -1588,7 +1592,7 @@ class WebInterface(object): ] ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) if user_id: user_data = users.Users() @@ -1790,10 +1794,7 @@ class WebInterface(object): ("watched_status", False, False)] kwargs['json_data'] = build_datatables_json(kwargs, dt_columns, "date") - if grouping and str(grouping).isdigit(): - grouping = int(grouping) - elif grouping == 'false': - grouping = 0 + grouping = helpers.bool_true(grouping, return_none=True) custom_where = [] if user_id: @@ -2009,10 +2010,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_per_day(time_range=time_range, user_id=user_id, y_axis=y_axis, grouping=grouping) + result = graph.get_total_plays_per_day(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2049,10 +2053,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_per_dayofweek(time_range=time_range, user_id=user_id, y_axis=y_axis) + result = graph.get_total_plays_per_dayofweek(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2089,10 +2096,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_per_hourofday(time_range=time_range, user_id=user_id, y_axis=y_axis) + result = graph.get_total_plays_per_hourofday(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2129,10 +2139,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_per_month(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_total_plays_per_month(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2143,7 +2156,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_plays_by_top_10_platforms(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_plays_by_top_10_platforms(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by top 10 platforms. ``` @@ -2169,10 +2182,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_by_top_10_platforms(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_total_plays_by_top_10_platforms(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2183,7 +2199,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_plays_by_top_10_users(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_plays_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by top 10 users. ``` @@ -2209,10 +2225,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_by_top_10_users(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_total_plays_by_top_10_users(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2223,7 +2242,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_plays_by_stream_type(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_plays_by_stream_type(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by stream type by date. ``` @@ -2248,10 +2267,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_per_stream_type(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_total_plays_per_stream_type(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2262,7 +2284,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_plays_by_source_resolution(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_plays_by_source_resolution(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by source resolution. ``` @@ -2287,10 +2309,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_by_source_resolution(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_total_plays_by_source_resolution(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2301,7 +2326,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_plays_by_stream_resolution(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_plays_by_stream_resolution(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by stream resolution. ``` @@ -2326,10 +2351,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_total_plays_by_stream_resolution(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_total_plays_by_stream_resolution(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2340,7 +2368,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_stream_type_by_top_10_users(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_stream_type_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by stream type by top 10 users. ``` @@ -2365,10 +2393,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_stream_type_by_top_10_users(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_stream_type_by_top_10_users(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -2379,7 +2410,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth() @addtoapi() - def get_stream_type_by_top_10_platforms(self, time_range='30', y_axis='plays', grouping=None, user_id=None, **kwargs): + def get_stream_type_by_top_10_platforms(self, time_range='30', y_axis='plays', user_id=None, grouping=None, **kwargs): """ Get graph data by stream type by top 10 platforms. ``` @@ -2404,10 +2435,13 @@ class WebInterface(object): } ``` """ - grouping = int(grouping) if str(grouping).isdigit() else grouping + grouping = helpers.bool_true(grouping, return_none=True) graph = graphs.Graphs() - result = graph.get_stream_type_by_top_10_platforms(time_range=time_range, y_axis=y_axis, user_id=user_id) + result = graph.get_stream_type_by_top_10_platforms(time_range=time_range, + y_axis=y_axis, + user_id=user_id, + grouping=grouping) if result: return result @@ -5544,7 +5578,7 @@ class WebInterface(object): @cherrypy.tools.json_out() @requireAuth(member_of("admin")) @addtoapi() - def get_home_stats(self, grouping=0, time_range=30, stats_type='plays', stats_count=10, **kwargs): + def get_home_stats(self, time_range=30, stats_type='plays', stats_count=10, grouping=None, **kwargs): """ Get the homepage watch statistics. ``` @@ -5626,6 +5660,8 @@ class WebInterface(object): elif stats_type in (1, '1'): stats_type = 'duration' + grouping = helpers.bool_true(grouping, return_none=True) + data_factory = datafactory.DataFactory() result = data_factory.get_home_stats(grouping=grouping, time_range=time_range,