diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py
index a33ca723..c83e6fbb 100644
--- a/plexpy/datafactory.py
+++ b/plexpy/datafactory.py
@@ -765,10 +765,10 @@ class DataFactory(object):
return recently_watched
- def get_metadata_details(self, row_id):
+ def get_metadata_details(self, rating_key):
monitor_db = database.MonitorDatabase()
- if row_id:
+ if rating_key:
query = 'SELECT session_history_metadata.rating_key, session_history_metadata.parent_rating_key, ' \
'session_history_metadata.grandparent_rating_key, session_history_metadata.title, ' \
'session_history_metadata.parent_title, session_history_metadata.grandparent_title, ' \
@@ -785,8 +785,8 @@ class DataFactory(object):
'session_history_metadata.actors, session_history_metadata.genres, session_history_metadata.studio ' \
'FROM session_history_metadata ' \
'JOIN library_sections ON session_history_metadata.library_id = library_sections.section_id ' \
- 'WHERE session_history_metadata.id = ?'
- result = monitor_db.select(query=query, args=[row_id])
+ 'WHERE session_history_metadata.rating_key = ?'
+ result = monitor_db.select(query=query, args=[rating_key])
else:
result = []
@@ -1041,7 +1041,9 @@ class DataFactory(object):
return key_list
- def update_rating_key(self, old_key_list='', new_key_list='', media_type=''):
+ def update_metadata(self, old_key_list='', new_key_list='', media_type=''):
+ from plexpy import pmsconnect
+ pms_connect = pmsconnect.PmsConnect()
monitor_db = database.MonitorDatabase()
# function to map rating keys pairs
@@ -1049,8 +1051,7 @@ class DataFactory(object):
pairs = {}
for k, v in old.iteritems():
if k in new:
- if v['rating_key'] != new[k]['rating_key']:
- pairs.update({v['rating_key']: new[k]['rating_key']})
+ pairs.update({v['rating_key']: new[k]['rating_key']})
if 'children' in old[k]:
pairs.update(get_pairs(old[k]['children'], new[k]['children']))
@@ -1062,73 +1063,78 @@ class DataFactory(object):
mapping = get_pairs(old_key_list, new_key_list)
if mapping:
- logger.info(u"PlexPy DataFactory :: Updating rating keys in the database.")
+ logger.info(u"PlexPy DataFactory :: Updating metadata in the database.")
for old_key, new_key in mapping.iteritems():
- # check library_id (1 table)
- monitor_db.action('UPDATE session_history_metadata SET library_id = ? WHERE rating_key = ?',
- [new_key_list['library_id'], old_key])
+ result = pms_connect.get_metadata_details(new_key)
- # check rating_key (3 tables)
- monitor_db.action('UPDATE session_history SET rating_key = ? WHERE rating_key = ?',
- [new_key, old_key])
- monitor_db.action('UPDATE session_history_media_info SET rating_key = ? WHERE rating_key = ?',
- [new_key, old_key])
- monitor_db.action('UPDATE session_history_metadata SET rating_key = ? WHERE rating_key = ?',
- [new_key, old_key])
+ if result:
+ metadata = result['metadata']
+ if metadata['media_type'] == 'show' or metadata['media_type'] == 'artist':
+ # check grandparent_rating_key (2 tables)
+ monitor_db.action('UPDATE session_history SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?',
+ [new_key, old_key])
+ monitor_db.action('UPDATE session_history_metadata SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?',
+ [new_key, old_key])
+ elif metadata['media_type'] == 'season' or metadata['media_type'] == 'album':
+ # check parent_rating_key (2 tables)
+ monitor_db.action('UPDATE session_history SET parent_rating_key = ? WHERE parent_rating_key = ?',
+ [new_key, old_key])
+ monitor_db.action('UPDATE session_history_metadata SET parent_rating_key = ? WHERE parent_rating_key = ?',
+ [new_key, old_key])
+ else:
+ # check rating_key (2 tables)
+ monitor_db.action('UPDATE session_history SET rating_key = ? WHERE rating_key = ?',
+ [new_key, old_key])
+ monitor_db.action('UPDATE session_history_media_info SET rating_key = ? WHERE rating_key = ?',
+ [new_key, old_key])
- # check parent_rating_key (2 tables)
- monitor_db.action('UPDATE session_history SET parent_rating_key = ? WHERE parent_rating_key = ?',
- [new_key, old_key])
- monitor_db.action('UPDATE session_history_metadata SET parent_rating_key = ? WHERE parent_rating_key = ?',
- [new_key, old_key])
+ # update session_history_metadata table
+ self.update_metadata_details(old_key, new_key, metadata)
- # check grandparent_rating_key (2 tables)
- monitor_db.action('UPDATE session_history SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?',
- [new_key, old_key])
- monitor_db.action('UPDATE session_history_metadata SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?',
- [new_key, old_key])
-
- # check thumb (1 table)
- monitor_db.action('UPDATE session_history_metadata SET thumb = replace(thumb, ?, ?) \
- WHERE thumb LIKE "/library/metadata/%s/thumb/%%"' % old_key,
- [old_key, new_key])
-
- # check parent_thumb (1 table)
- monitor_db.action('UPDATE session_history_metadata SET parent_thumb = replace(parent_thumb, ?, ?) \
- WHERE parent_thumb LIKE "/library/metadata/%s/thumb/%%"' % old_key,
- [old_key, new_key])
-
- # check grandparent_thumb (1 table)
- monitor_db.action('UPDATE session_history_metadata SET grandparent_thumb = replace(grandparent_thumb, ?, ?) \
- WHERE grandparent_thumb LIKE "/library/metadata/%s/thumb/%%"' % old_key,
- [old_key, new_key])
-
- # check art (1 table)
- monitor_db.action('UPDATE session_history_metadata SET art = replace(art, ?, ?) \
- WHERE art LIKE "/library/metadata/%s/art/%%"' % old_key,
- [old_key, new_key])
-
- return 'Updated rating key in database.'
+ return 'Updated metadata in database.'
else:
- return 'No updated rating key needed in database. No changes were made.'
+ return 'Unable to update metadata in database. No changes were made.'
# for debugging
#return mapping
- def get_session_ip(self, session_key=''):
- monitor_db = database.MonitorDatabase()
+ def update_metadata_details(self, old_rating_key='', new_rating_key='', metadata=None):
- if session_key:
- query = 'SELECT ip_address FROM sessions WHERE session_key = %d' % int(session_key)
- result = monitor_db.select(query)
- else:
- return None
+ if metadata:
+ # Create full_title
+ if metadata['media_type'] == 'episode' or metadata['media_type'] == 'track':
+ full_title = '%s - %s' % (metadata['grandparent_title'], metadata['title'])
+ else:
+ full_title = metadata['title']
- ip_address = 'N/A'
+ directors = ";".join(metadata['directors'])
+ writers = ";".join(metadata['writers'])
+ actors = ";".join(metadata['actors'])
+ genres = ";".join(metadata['genres'])
- for item in result:
- ip_address = item['ip_address']
+ #logger.info(u"PlexPy DataFactory :: Updating metadata in the database for rating key: %s." % new_rating_key)
+ monitor_db = database.MonitorDatabase()
- return ip_address
+ # Update the session_history_metadata table
+ query = 'UPDATE session_history_metadata SET rating_key = ?, parent_rating_key = ?, ' \
+ 'grandparent_rating_key = ?, title = ?, parent_title = ?, grandparent_title = ?, full_title = ?, ' \
+ 'media_index = ?, parent_media_index = ?, library_id = ?, thumb = ?, parent_thumb = ?, ' \
+ 'grandparent_thumb = ?, art = ?, media_type = ?, year = ?, originally_available_at = ?, ' \
+ 'added_at = ?, updated_at = ?, last_viewed_at = ?, content_rating = ?, summary = ?, ' \
+ 'tagline = ?, rating = ?, duration = ?, guid = ?, directors = ?, writers = ?, actors = ?, ' \
+ 'genres = ?, studio = ? ' \
+ 'WHERE rating_key = ?'
+
+ args = [metadata['rating_key'], metadata['parent_rating_key'], metadata['grandparent_rating_key'],
+ metadata['title'], metadata['parent_title'], metadata['grandparent_title'], full_title,
+ metadata['media_index'], metadata['parent_media_index'], metadata['library_id'], metadata['thumb'],
+ metadata['parent_thumb'], metadata['grandparent_thumb'], metadata['art'], metadata['media_type'],
+ metadata['year'], metadata['originally_available_at'], metadata['added_at'], metadata['updated_at'],
+ metadata['last_viewed_at'], metadata['content_rating'], metadata['summary'], metadata['tagline'],
+ metadata['rating'], metadata['duration'], metadata['guid'], directors, writers, actors, genres,
+ metadata['studio'],
+ old_rating_key]
+
+ monitor_db.action(query=query, args=args)
def get_total_duration(self, custom_where=None):
monitor_db = database.MonitorDatabase()
@@ -1167,8 +1173,8 @@ class DataFactory(object):
return None
for item in result:
- id = item[0]
- rating_key = item[1]
+ id = item['id']
+ rating_key = item['rating_key']
result = pms_connect.get_metadata_details(rating_key=rating_key)
@@ -1202,4 +1208,20 @@ class DataFactory(object):
monitor_db.upsert('library_sections', key_dict=section_keys, value_dict=section_values)
- return True
\ No newline at end of file
+ return True
+
+ def get_session_ip(self, session_key=''):
+ monitor_db = database.MonitorDatabase()
+
+ if session_key:
+ query = 'SELECT ip_address FROM sessions WHERE session_key = %d' % int(session_key)
+ result = monitor_db.select(query)
+ else:
+ return None
+
+ ip_address = 'N/A'
+
+ for item in result:
+ ip_address = item['ip_address']
+
+ return ip_address
\ No newline at end of file
diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py
index 0e2a2654..d88ecf53 100644
--- a/plexpy/pmsconnect.py
+++ b/plexpy/pmsconnect.py
@@ -429,12 +429,14 @@ class PmsConnect(object):
'library_id': library_id,
'library_title': library_title,
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
+ 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
+ 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@@ -462,12 +464,14 @@ class PmsConnect(object):
'library_id': library_id,
'library_title': library_title,
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
+ 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
+ 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@@ -498,12 +502,13 @@ class PmsConnect(object):
'library_title': library_title,
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': show_details['metadata']['studio'],
+ 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': show_details['metadata']['studio'],
'content_rating': show_details['metadata']['content_rating'],
'summary': show_details['metadata']['summary'],
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@@ -535,12 +540,12 @@ class PmsConnect(object):
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': show_details['metadata']['studio'],
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': show_details['metadata']['studio'],
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@@ -568,12 +573,14 @@ class PmsConnect(object):
'library_id': library_id,
'library_title': library_title,
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
+ 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
+ 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@@ -604,12 +611,13 @@ class PmsConnect(object):
'library_title': library_title,
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
+ 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': artist_details['metadata']['summary'],
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@@ -641,12 +649,12 @@ class PmsConnect(object):
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'),
'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'),
- 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
- 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
- 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
- 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
- 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
+ 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'),
+ 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
+ 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
+ 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
+ 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
diff --git a/plexpy/webserve.py b/plexpy/webserve.py
index d80a86e3..28fe3219 100644
--- a/plexpy/webserve.py
+++ b/plexpy/webserve.py
@@ -845,13 +845,14 @@ class WebInterface(object):
return None
@cherrypy.expose
- def info(self, library_id=None, item_id=None, source=None, query=None, **kwargs):
+ def info(self, library_id=None, rating_key=None, source=None, **kwargs):
# Make sure our library sections are up to date.
data_factory = datafactory.DataFactory()
data_factory.update_library_sections()
+ # temporary until I find a beter place to put this
+ #data_factory.update_library_ids()
metadata = None
- query_string = query
config = {
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER,
@@ -860,7 +861,7 @@ class WebInterface(object):
if source == 'history':
data_factory = datafactory.DataFactory()
- metadata = data_factory.get_metadata_details(row_id=item_id)
+ metadata = data_factory.get_metadata_details(rating_key=rating_key)
elif library_id:
pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_library_metadata_details(library_id=library_id)
@@ -868,20 +869,51 @@ class WebInterface(object):
metadata = result['metadata']
else:
pms_connect = pmsconnect.PmsConnect()
- result = pms_connect.get_metadata_details(rating_key=item_id)
+ result = pms_connect.get_metadata_details(rating_key=rating_key)
if result:
metadata = result['metadata']
- else:
- data_factory = datafactory.DataFactory()
- query = data_factory.get_search_query(rating_key=item_id)
- if query_string:
- query['query_string'] = query_string
-
+
if metadata:
return serve_template(templatename="info.html", data=metadata, title="Info", config=config)
+ else:
+ return self.update_metadata(rating_key)
+ #raise cherrypy.InternalRedirect("/update_metadata?rating_key=" + rating_key)
+
+ @cherrypy.expose
+ def update_metadata(self, rating_key=None, query=None, **kwargs):
+
+ query_string = query
+
+ data_factory = datafactory.DataFactory()
+ query = data_factory.get_search_query(rating_key=rating_key)
+ if query_string:
+ query['query_string'] = query_string
+
+ if query:
+ return serve_template(templatename="update_metadata.html", query=query, title="Info")
else:
logger.warn('Unable to retrieve data.')
- return serve_template(templatename="info.html", data=None, query=query, title="Info")
+ return serve_template(templatename="update_metadata.html", query=query, title="Info")
+
+ @cherrypy.expose
+ def update_metadata_details(self, old_rating_key, new_rating_key, media_type, **kwargs):
+ data_factory = datafactory.DataFactory()
+ pms_connect = pmsconnect.PmsConnect()
+
+ if new_rating_key:
+ old_key_list = data_factory.get_rating_keys_list(rating_key=old_rating_key, media_type=media_type)
+ new_key_list = pms_connect.get_rating_keys_list(rating_key=new_rating_key, media_type=media_type)
+
+ result = data_factory.update_metadata(old_key_list=old_key_list,
+ new_key_list=new_key_list,
+ media_type=media_type)
+
+ if result:
+ cherrypy.response.headers['Content-type'] = 'application/json'
+ return json.dumps({'message': result})
+ else:
+ cherrypy.response.headers['Content-type'] = 'application/json'
+ return json.dumps({'message': 'no data received'})
@cherrypy.expose
def get_user_recently_watched(self, user=None, user_id=None, limit='10', **kwargs):
@@ -1594,26 +1626,6 @@ class WebInterface(object):
else:
logger.warn('Unable to retrieve data.')
- @cherrypy.expose
- def get_map_rating_keys(self, old_rating_key, new_rating_key, media_type, **kwargs):
-
- data_factory = datafactory.DataFactory()
- pms_connect = pmsconnect.PmsConnect()
-
- if new_rating_key:
- old_key_list = data_factory.get_rating_keys_list(rating_key=old_rating_key, media_type=media_type)
- new_key_list = pms_connect.get_rating_keys_list(rating_key=new_rating_key, media_type=media_type)
-
- result = data_factory.update_rating_key(old_key_list=old_key_list,
- new_key_list=new_key_list,
- media_type=media_type)
-
- if result:
- cherrypy.response.headers['Content-type'] = 'application/json'
- return json.dumps(result)
- else:
- logger.warn('Unable to retrieve data.')
-
@cherrypy.expose
def discover(self, token=''):
"""