Add setting to selectively hide library statistics cards on the homepage

This commit is contained in:
Jonathan Wong 2015-09-18 23:42:16 -07:00
parent 8a989d71ca
commit 078f4babf5
5 changed files with 89 additions and 7 deletions

View file

@ -82,10 +82,11 @@ _CONFIG_DEFINITIONS = {
'GROWL_ON_RESUME': (int, 'Growl', 0),
'GROWL_ON_BUFFER': (int, 'Growl', 0),
'GROWL_ON_WATCHED': (int, 'Growl', 0),
'HOME_LIBRARY_CARDS': (str, 'General', 'library_statistics_first'),
'HOME_STATS_LENGTH': (int, 'General', 30),
'HOME_STATS_TYPE': (int, 'General', 0),
'HOME_STATS_COUNT': (int, 'General', 5),
'HOME_STATS_CARDS': (str, 'General', 'top_tv, popular_tv, top_movies, popular_movies, top_music, popular_music, top_users, top_platforms, last_watched'),
'HOME_STATS_CARDS': (str, 'General', 'watch_statistics_first'),
'HTTPS_CERT': (str, 'General', ''),
'HTTPS_KEY': (str, 'General', ''),
'HTTP_HOST': (str, 'General', '0.0.0.0'),

View file

@ -1208,7 +1208,7 @@ class PmsConnect(object):
'title': helpers.get_xml_attr(xml_head[0], 'title1'),
'libraries_list': libraries_list
}
return output
"""
@ -1270,13 +1270,15 @@ class PmsConnect(object):
return output
"""
Return processed and validated server statistics.
Return processed and validated library statistics.
Output: array
"""
def get_library_stats(self):
def get_library_stats(self, library_cards=''):
server_libraries = self.get_server_children()
library_keys = library_cards.split(', ')
server_library_stats = []
if server_libraries['libraries_count'] != '0':
@ -1285,7 +1287,10 @@ class PmsConnect(object):
for library in libraries_list:
library_type = library['type']
section_key = library['key']
library_list = self.get_library_children(library_type, section_key)
if section_key in library_keys:
library_list = self.get_library_children(library_type, section_key)
else:
continue
if library_list['library_count'] != '0':
library_stats = {'title': library['title'],

View file

@ -67,6 +67,7 @@ class WebInterface(object):
config = {
"home_stats_length": plexpy.CONFIG.HOME_STATS_LENGTH,
"home_stats_cards": plexpy.CONFIG.HOME_STATS_CARDS,
"home_library_cards": plexpy.CONFIG.HOME_LIBRARY_CARDS,
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER
}
return serve_template(templatename="index.html", title="Home", config=config)
@ -140,7 +141,10 @@ class WebInterface(object):
@cherrypy.expose
def library_stats(self, **kwargs):
pms_connect = pmsconnect.PmsConnect()
stats_data = pms_connect.get_library_stats()
library_cards = plexpy.CONFIG.HOME_LIBRARY_CARDS
stats_data = pms_connect.get_library_stats(library_cards=library_cards)
return serve_template(templatename="library_stats.html", title="Library Stats", data=stats_data)
@ -479,6 +483,7 @@ class WebInterface(object):
"home_stats_type": checked(plexpy.CONFIG.HOME_STATS_TYPE),
"home_stats_count": plexpy.CONFIG.HOME_STATS_COUNT,
"home_stats_cards": plexpy.CONFIG.HOME_STATS_CARDS,
"home_library_cards": plexpy.CONFIG.HOME_LIBRARY_CARDS,
"buffer_threshold": plexpy.CONFIG.BUFFER_THRESHOLD,
"buffer_wait": plexpy.CONFIG.BUFFER_WAIT
}
@ -535,6 +540,10 @@ class WebInterface(object):
if kwargs['home_stats_cards'] != 'watch_statistics':
kwargs['home_stats_cards'] = ', '.join(kwargs['home_stats_cards'])
if 'home_library_cards' in kwargs:
if kwargs['home_library_cards'] != 'library_statistics':
kwargs['home_library_cards'] = ', '.join(kwargs['home_library_cards'])
plexpy.CONFIG.process_kwargs(kwargs)
# Write the config
@ -1132,6 +1141,26 @@ class WebInterface(object):
else:
logger.warn('Unable to retrieve data.')
@cherrypy.expose
def get_server_children(self, **kwargs):
pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_server_children()
if plexpy.CONFIG.HOME_LIBRARY_CARDS == '':
library_keys = ['library_statistics']
for library in result['libraries_list']:
library_keys.append(library['key'])
plexpy.CONFIG.HOME_LIBRARY_CARDS = ', '.join(library_keys)
plexpy.CONFIG.write()
if result:
cherrypy.response.headers['Content-type'] = 'application/json'
return json.dumps(result)
else:
logger.warn('Unable to retrieve data.')
@cherrypy.expose
def get_activity(self, **kwargs):