Add function to update rating keys

This commit is contained in:
Jonathan Wong 2015-09-24 22:11:56 -07:00
parent 28d05ba9fe
commit e6556eaf27
2 changed files with 49 additions and 0 deletions

View file

@ -826,3 +826,36 @@ class DataFactory(object):
return None return None
return query return query
def update_rating_key(self, old_rating_key='', new_rating_key='', media_type=''):
monitor_db = database.MonitorDatabase()
if new_rating_key.isdigit():
logger.info(u"PlexPy DataFactory :: Updating rating key %s to %s in the session history database." % (old_rating_key, new_rating_key))
if media_type == 'movie' or media_type == 'episode' or media_type == 'track':
monitor_db.action('UPDATE session_history SET rating_key = ? WHERE rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_media_info SET rating_key = ? WHERE rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_metadata SET rating_key = ? WHERE rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_metadata SET thumb = replace(thumb, ?, ?) WHERE thumb LIKE "/library/metadata/%s/thumb/%%"' % old_rating_key,
[old_rating_key, new_rating_key])
if media_type == 'season' or media_type == 'album':
monitor_db.action('UPDATE session_history SET parent_rating_key = ? WHERE parent_rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_metadata SET parent_rating_key = ? WHERE parent_rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_metadata SET parent_thumb = replace(parent_thumb, ?, ?) WHERE parent_thumb LIKE "/library/metadata/%s/thumb/%%"' % old_rating_key,
[old_rating_key, new_rating_key])
if media_type == 'show' or media_type == 'artist':
monitor_db.action('UPDATE session_history SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_metadata SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?', [new_rating_key, old_rating_key])
monitor_db.action('UPDATE session_history_metadata SET grandparent_thumb = replace(grandparent_thumb, ?, ?) WHERE grandparent_thumb LIKE "/library/metadata/%s/thumb/%%"' % old_rating_key,
[old_rating_key, new_rating_key])
if media_type == 'movie' or media_type == 'show':
monitor_db.action('UPDATE session_history_metadata SET art = replace(art, ?, ?) WHERE art LIKE "/library/metadata/%s/art/%%"' % old_rating_key,
[old_rating_key, new_rating_key])
return 'Updated rating key %s to %s.' % (old_rating_key, new_rating_key)
else:
return 'Unable to update rating key. Input new_rating_key not valid.'

View file

@ -1353,3 +1353,19 @@ class WebInterface(object):
else: else:
logger.warn('Unable to retrieve data.') logger.warn('Unable to retrieve data.')
return serve_template(templatename="info_search_results_list.html", data=None, title="Search Result List") return serve_template(templatename="info_search_results_list.html", data=None, title="Search Result List")
@cherrypy.expose
def update_history_rating_key(self, old_rating_key, new_rating_key, media_type, **kwargs):
data_factory = datafactory.DataFactory()
if new_rating_key:
update_row = data_factory.update_rating_key(old_rating_key=old_rating_key,
new_rating_key=new_rating_key,
media_type=media_type)
if update_row:
cherrypy.response.headers['Content-type'] = 'application/json'
return json.dumps({'message': update_row})
else:
cherrypy.response.headers['Content-type'] = 'application/json'
return json.dumps({'message': 'no data received'})