Add update metadata feature

* Use rating_key instead of item_id for history info
This commit is contained in:
Jonathan Wong 2015-11-15 11:19:34 -08:00
parent 09aac22909
commit 771885f27f
16 changed files with 448 additions and 367 deletions

View file

@ -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=''):
"""