diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 3e40d479..c0185c67 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -878,9 +878,13 @@ class DataFactory(object): ip_address = 'N/A' + user_cond = '' + if session.get_session_user_id(): + user_cond = 'AND user_id = %s ' % session.get_session_user_id() + if session_key: try: - query = 'SELECT ip_address FROM sessions WHERE session_key = %d' % int(session_key) + query = 'SELECT ip_address FROM sessions WHERE session_key = %d %s' % (int(session_key), user_cond) result = monitor_db.select(query) except Exception as e: logger.warn(u"PlexPy DataFactory :: Unable to execute database query for get_session_ip: %s." % e) diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index 25eb5ead..0a4c43ce 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -1468,9 +1468,12 @@ class PmsConnect(object): if a.getElementsByTagName('Track'): result_data = a.getElementsByTagName('Track') + section_id = helpers.get_xml_attr(a, 'librarySectionID') + if result_data: for result in result_data: - children_output = {'rating_key': helpers.get_xml_attr(result, 'ratingKey'), + children_output = {'section_id': section_id, + 'rating_key': helpers.get_xml_attr(result, 'ratingKey'), 'media_index': helpers.get_xml_attr(result, 'index'), 'title': helpers.get_xml_attr(result, 'title'), 'thumb': helpers.get_xml_attr(result, 'thumb'), @@ -1482,7 +1485,7 @@ class PmsConnect(object): output = {'children_count': helpers.get_xml_attr(xml_head[0], 'size'), 'children_type': helpers.get_xml_attr(xml_head[0], 'viewGroup'), 'title': helpers.get_xml_attr(xml_head[0], 'title2'), - 'children_list': children_list + 'children_list': session.filter_session_info(children_list, 'section_id') } return output @@ -1902,7 +1905,7 @@ class PmsConnect(object): search_results_count += 1 output = {'results_count': search_results_count, - 'results_list': search_results_list + 'results_list': {k: session.filter_session_info(v, 'section_id') for k, v in search_results_list.iteritems()} } return output diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 8868b5b6..9ebae138 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -1859,6 +1859,9 @@ class WebInterface(object): metadata['poster_url'] = poster_url if metadata: + if metadata['section_id'] and not allow_session_library(metadata['section_id']): + raise cherrypy.HTTPRedirect(plexpy.HTTP_ROOT) + return serve_template(templatename="info.html", data=metadata, title="Info", config=config, source=source) else: return self.update_metadata(rating_key, query) @@ -1901,7 +1904,7 @@ class WebInterface(object): cherrypy.response.headers['Content-type'] = 'image/png' return fallback_image except IOError, e: - logger.error(u"Unable to read fallback %s image: %s" % (fallback, e)) + logger.error(u"Unable to read fallback %s image: %s" % (fallback, e)) return None