Make sure info pages are protected if source=history

This commit is contained in:
JonnyWong16 2016-05-01 03:21:10 -07:00
parent e147ce9039
commit 1622b0fa29
5 changed files with 44 additions and 21 deletions

View file

@ -245,7 +245,7 @@ DOCUMENTATION :: END
% elif a['state'] == 'buffering': % elif a['state'] == 'buffering':
<i class="fa fa-spinner"></i>&nbsp; <i class="fa fa-spinner"></i>&nbsp;
% endif % endif
% if a['title']: % if a['rating_key']:
% if a['media_type'] == 'episode': % if a['media_type'] == 'episode':
<a href="info?rating_key=${a['rating_key']}" title="${a['grandparent_title']} - ${a['title']}">${a['grandparent_title']} - ${a['title']}</a> <a href="info?rating_key=${a['rating_key']}" title="${a['grandparent_title']} - ${a['title']}">${a['grandparent_title']} - ${a['title']}</a>
% elif a['media_type'] == 'movie': % elif a['media_type'] == 'movie':
@ -264,7 +264,7 @@ DOCUMENTATION :: END
% endif % endif
</div> </div>
<div class="dashboard-activity-metadata-subtitle"> <div class="dashboard-activity-metadata-subtitle">
% if a['media_index'] or a['parent_media_index'] or a['parent_title'] or a['title'] or a['year']: % if a['rating_key']:
% if a['media_type'] == 'episode': % if a['media_type'] == 'episode':
<span title="S${a['parent_media_index']} &middot; E${a['media_index']}">S${a['parent_media_index']} &middot; E${a['media_index']}</span> <span title="S${a['parent_media_index']} &middot; E${a['media_index']}">S${a['parent_media_index']} &middot; E${a['media_index']}</span>
% elif a['media_type'] == 'movie': % elif a['media_type'] == 'movie':

View file

@ -809,6 +809,7 @@ class DataFactory(object):
'session_history_metadata.tagline, session_history_metadata.rating, session_history_metadata.duration, ' \ 'session_history_metadata.tagline, session_history_metadata.rating, session_history_metadata.duration, ' \
'session_history_metadata.guid, session_history_metadata.directors, session_history_metadata.writers, ' \ 'session_history_metadata.guid, session_history_metadata.directors, session_history_metadata.writers, ' \
'session_history_metadata.actors, session_history_metadata.genres, session_history_metadata.studio, ' \ 'session_history_metadata.actors, session_history_metadata.genres, session_history_metadata.studio, ' \
'session_history_metadata.labels, ' \
'session_history_media_info.container, session_history_media_info.bitrate, ' \ 'session_history_media_info.container, session_history_media_info.bitrate, ' \
'session_history_media_info.video_codec, session_history_media_info.video_resolution, ' \ 'session_history_media_info.video_codec, session_history_media_info.video_resolution, ' \
'session_history_media_info.video_framerate, session_history_media_info.audio_codec, ' \ 'session_history_media_info.video_framerate, session_history_media_info.audio_codec, ' \
@ -821,12 +822,14 @@ class DataFactory(object):
else: else:
result = [] result = []
metadata = {} metadata_list = []
for item in result: for item in result:
directors = item['directors'].split(';') if item['directors'] else [] directors = item['directors'].split(';') if item['directors'] else []
writers = item['writers'].split(';') if item['writers'] else [] writers = item['writers'].split(';') if item['writers'] else []
actors = item['actors'].split(';') if item['actors'] else [] actors = item['actors'].split(';') if item['actors'] else []
genres = item['genres'].split(';') if item['genres'] else [] genres = item['genres'].split(';') if item['genres'] else []
labels = item['labels'].split(';') if item['labels'] else []
metadata = {'media_type': item['media_type'], metadata = {'media_type': item['media_type'],
'rating_key': item['rating_key'], 'rating_key': item['rating_key'],
@ -853,10 +856,11 @@ class DataFactory(object):
'updated_at': item['updated_at'], 'updated_at': item['updated_at'],
'last_viewed_at': item['last_viewed_at'], 'last_viewed_at': item['last_viewed_at'],
'guid': item['guid'], 'guid': item['guid'],
'writers': writers,
'directors': directors, 'directors': directors,
'genres': genres, 'writers': writers,
'actors': actors, 'actors': actors,
'genres': genres,
'labels': labels,
'library_name': item['section_name'], 'library_name': item['section_name'],
'section_id': item['section_id'], 'section_id': item['section_id'],
'container': item['container'], 'container': item['container'],
@ -867,8 +871,14 @@ class DataFactory(object):
'audio_codec': item['audio_codec'], 'audio_codec': item['audio_codec'],
'audio_channels': item['audio_channels'] 'audio_channels': item['audio_channels']
} }
metadata_list.append(metadata)
return metadata metadata = session.filter_session_info(metadata_list, filter_key='section_id')
if metadata:
return {'metadata': session.filter_session_info(metadata_list, filter_key='section_id')[0]}
else:
return []
def get_total_duration(self, custom_where=None): def get_total_duration(self, custom_where=None):
monitor_db = database.MonitorDatabase() monitor_db = database.MonitorDatabase()

View file

@ -53,7 +53,7 @@ def get_session_shared_libraries():
""" """
from plexpy import users from plexpy import users
user_details = users.Users().get_details(user_id=get_session_user_id()) user_details = users.Users().get_details(user_id=get_session_user_id())
return user_details['shared_libraries'] return tuple(str(s) for s in user_details['shared_libraries'])
def get_session_library_filters(): def get_session_library_filters():
""" """
@ -151,13 +151,23 @@ def filter_session_info(list_of_dicts, filter_key=None):
f_content_rating, f_labels = get_session_library_filters_type(session_library_filters, f_content_rating, f_labels = get_session_library_filters_type(session_library_filters,
media_type=d['media_type']) media_type=d['media_type'])
d_content_rating = d.get('content_rating', '').lower() d_content_rating = d.get('content_rating', '')
d_labels = tuple(f.lower() for f in d.get('labels', ())) d_labels = tuple(f.lower() for f in d.get('labels', ()))
if (not f_content_rating or set(d_content_rating).intersection(set(f_content_rating))) and \ keep = False
(not f_labels or set(d_labels).intersection(set(f_labels))): if not f_content_rating and not f_labels:
continue keep = True
elif not f_content_rating and f_labels:
if set(d_labels).intersection(set(f_labels)):
keep = True
elif f_content_rating and not f_labels:
if d_content_rating in f_content_rating:
keep = True
elif f_content_rating and f_labels:
if d_content_rating in f_content_rating or set(d_labels).intersection(set(f_labels)):
keep = True
if keep:
new_list_of_dicts.append(d) new_list_of_dicts.append(d)
return new_list_of_dicts return new_list_of_dicts
@ -223,13 +233,12 @@ def mask_session_info(list_of_dicts, mask_metadata=True):
f_content_rating, f_labels = get_session_library_filters_type(session_library_filters, f_content_rating, f_labels = get_session_library_filters_type(session_library_filters,
media_type=d['media_type']) media_type=d['media_type'])
if not f_content_rating and not f_labels:
continue
d_content_rating = d.get('content_rating', '') d_content_rating = d.get('content_rating', '')
d_labels = tuple(f.lower() for f in d.get('labels', ())) d_labels = tuple(f.lower() for f in d.get('labels', ()))
if not f_content_rating and f_labels: if not f_content_rating and not f_labels:
continue
elif not f_content_rating and f_labels:
if set(d_labels).intersection(set(f_labels)): if set(d_labels).intersection(set(f_labels)):
continue continue
elif f_content_rating and not f_labels: elif f_content_rating and not f_labels:

View file

@ -321,6 +321,8 @@ class Users(object):
else: else:
user_thumb = common.DEFAULT_USER_THUMB user_thumb = common.DEFAULT_USER_THUMB
shared_libraries = tuple(item['shared_libraries'].split(';')) if item['shared_libraries'] else ()
user_details = {'user_id': item['user_id'], user_details = {'user_id': item['user_id'],
'username': item['username'], 'username': item['username'],
'friendly_name': friendly_name, 'friendly_name': friendly_name,
@ -333,7 +335,7 @@ class Users(object):
'keep_history': item['keep_history'], 'keep_history': item['keep_history'],
'deleted_user': item['deleted_user'], 'deleted_user': item['deleted_user'],
'allow_guest': item['allow_guest'], 'allow_guest': item['allow_guest'],
'shared_libraries': tuple(item['shared_libraries'].split(';')) 'shared_libraries': shared_libraries
} }
return user_details return user_details

View file

@ -1846,7 +1846,9 @@ class WebInterface(object):
if source == 'history': if source == 'history':
data_factory = datafactory.DataFactory() data_factory = datafactory.DataFactory()
metadata = data_factory.get_metadata_details(rating_key=rating_key) result = data_factory.get_metadata_details(rating_key=rating_key)
if result:
metadata = result['metadata']
poster_url = data_factory.get_poster_url(metadata=metadata) poster_url = data_factory.get_poster_url(metadata=metadata)
metadata['poster_url'] = poster_url metadata['poster_url'] = poster_url
else: else: