Improve delete history using list of row ids

This commit is contained in:
JonnyWong16 2020-04-10 11:45:20 -07:00
parent 1091a64863
commit 38f64c7d85
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
6 changed files with 71 additions and 63 deletions

View file

@ -185,17 +185,15 @@
$('#deleteCount').text(history_to_delete.length); $('#deleteCount').text(history_to_delete.length);
$('#confirm-modal-delete').modal(); $('#confirm-modal-delete').modal();
$('#confirm-modal-delete').one('click', '#confirm-delete', function () { $('#confirm-modal-delete').one('click', '#confirm-delete', function () {
history_to_delete.forEach(function(row, idx) { $.ajax({
$.ajax({ url: 'delete_history_rows',
url: 'delete_history_rows', type: 'POST',
type: 'POST', data: { row_ids: history_to_delete.join(',') },
data: { row_id: row }, async: true,
async: true, success: function (data) {
success: function (data) { var msg = "History deleted";
var msg = "History deleted"; showMsg(msg, false, true, 2000);
showMsg(msg, false, true, 2000); }
}
});
}); });
history_table.draw(); history_table.draw();
}); });

View file

@ -721,17 +721,15 @@ DOCUMENTATION :: END
$('#deleteCount').text(history_to_delete.length); $('#deleteCount').text(history_to_delete.length);
$('#confirm-modal-delete').modal(); $('#confirm-modal-delete').modal();
$('#confirm-modal-delete').one('click', '#confirm-delete', function () { $('#confirm-modal-delete').one('click', '#confirm-delete', function () {
history_to_delete.forEach(function (row, idx) { $.ajax({
$.ajax({ url: 'delete_history_rows',
url: 'delete_history_rows', type: 'POST',
type: 'POST', data: { row_ids: history_to_delete.join(',') },
data: { row_id: row }, async: true,
async: true, success: function (data) {
success: function (data) { var msg = "History deleted";
var msg = "History deleted"; showMsg(msg, false, true, 2000);
showMsg(msg, false, true, 2000); }
}
});
}); });
history_table.draw(); history_table.draw();
}); });

View file

@ -485,17 +485,15 @@ DOCUMENTATION :: END
$('#deleteCount').text(history_to_delete.length); $('#deleteCount').text(history_to_delete.length);
$('#confirm-modal-delete').modal(); $('#confirm-modal-delete').modal();
$('#confirm-modal-delete').one('click', '#confirm-delete', function () { $('#confirm-modal-delete').one('click', '#confirm-delete', function () {
history_to_delete.forEach(function(row, idx) { $.ajax({
$.ajax({ url: 'delete_history_rows',
url: 'delete_history_rows', type: 'POST',
type: 'POST', data: { row_ids: history_to_delete.join(',') },
data: { row_id: row }, async: true,
async: true, success: function (data) {
success: function (data) { var msg = "History deleted";
var msg = "History deleted"; showMsg(msg, false, true, 2000);
showMsg(msg, false, true, 2000); }
}
});
}); });
history_table.draw(); history_table.draw();
}); });

View file

@ -574,17 +574,15 @@ DOCUMENTATION :: END
$('#deleteType').text('history'); $('#deleteType').text('history');
$('#confirm-modal-delete').modal(); $('#confirm-modal-delete').modal();
$('#confirm-modal-delete').one('click', '#confirm-delete', function () { $('#confirm-modal-delete').one('click', '#confirm-delete', function () {
history_to_delete.forEach(function(row, idx) { $.ajax({
$.ajax({ url: 'delete_history_rows',
url: 'delete_history_rows', type: 'POST',
type: 'POST', data: { row_ids: history_to_delete.join(',') },
data: { row_id: row }, async: true,
async: true, success: function (data) {
success: function (data) { var msg = "History deleted";
var msg = "History deleted"; showMsg(msg, false, true, 2000);
showMsg(msg, false, true, 2000); }
}
});
}); });
history_table.draw(); history_table.draw();
}); });

View file

@ -1561,21 +1561,23 @@ class DataFactory(object):
return key_list return key_list
def delete_session_history_rows(self, row_id=None): def delete_session_history_rows(self, row_ids=None):
monitor_db = database.MonitorDatabase() if row_ids and row_ids is not None:
row_ids = map(helpers.cast_to_int, row_ids.split(','))
if row_id.isdigit(): if row_ids:
logger.info(u"Tautulli DataFactory :: Deleting row id %s from the session history database." % row_id) monitor_db = database.MonitorDatabase()
session_history_del = \
monitor_db.action('DELETE FROM session_history WHERE id = ?', [row_id])
session_history_media_info_del = \
monitor_db.action('DELETE FROM session_history_media_info WHERE id = ?', [row_id])
session_history_metadata_del = \
monitor_db.action('DELETE FROM session_history_metadata WHERE id = ?', [row_id])
return 'Deleted rows %s.' % row_id logger.info(u"Tautulli DataFactory :: Deleting history row ids %s from the session history database." % row_ids)
where = 'WHERE id IN ({})'.format(', '.join(['?'] * len(row_ids)))
for table in ('session_history', 'session_history_media_info', 'session_history_metadata'):
query = 'DELETE FROM {table} {where}'.format(table=table, where=where)
monitor_db.action(query=query, args=row_ids)
return 'Deleted history.'
else: else:
return 'Unable to delete rows. Input row not valid.' return 'Unable to delete rows. Input rows not valid.'
def update_metadata(self, old_key_list='', new_key_list='', media_type=''): def update_metadata(self, old_key_list='', new_key_list='', media_type=''):
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()

View file

@ -819,11 +819,11 @@ class WebInterface(object):
``` ```
Required parameters: Required parameters:
section_id (str): The id of the Plex library section section_id (str): The id of the Plex library section
Optional parameters: Optional parameters:
grouping (int): 0 or 1 grouping (int): 0 or 1
query_days (str): Comma separated days, e.g. "1, 7, 30, 0" query_days (str): Comma separated days, e.g. "1,7,30,0"
Returns: Returns:
json: json:
@ -1447,7 +1447,7 @@ class WebInterface(object):
Optional parameters: Optional parameters:
grouping (int): 0 or 1 grouping (int): 0 or 1
query_days (str): Comma separated days, e.g. "1, 7, 30, 0" query_days (str): Comma separated days, e.g. "1,7,30,0"
Returns: Returns:
json: json:
@ -1853,16 +1853,30 @@ class WebInterface(object):
@cherrypy.expose @cherrypy.expose
@cherrypy.tools.json_out() @cherrypy.tools.json_out()
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
def delete_history_rows(self, row_id, **kwargs): @addtoapi("delete_history")
def delete_history_rows(self, row_ids=None, **kwargs):
""" Delete history rows from Tautulli.
```
Required parameters:
row_ids (str): Comma separated row ids to delete, e.g. "65,110,2,3645"
Optional parameters:
None
Returns:
None
```
"""
data_factory = datafactory.DataFactory() data_factory = datafactory.DataFactory()
if row_id: if row_ids:
delete_row = data_factory.delete_session_history_rows(row_id=row_id) delete_row = data_factory.delete_session_history_rows(row_ids=row_ids)
if delete_row: if delete_row:
return {'message': delete_row} return {'message': delete_row}
else: else:
return {'message': 'no data received'} return {'message': 'No row ids received.'}
##### Graphs ##### ##### Graphs #####