mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-19 21:03:21 -07:00
Add function to delete exported files
This commit is contained in:
parent
deb49d7ff9
commit
8b8afacaea
6 changed files with 116 additions and 9 deletions
|
@ -216,6 +216,11 @@ def delete_recently_added():
|
|||
return clear_table('recently_added')
|
||||
|
||||
|
||||
def delete_exports():
|
||||
logger.info("Tautulli Database :: Clearing exported items from database.")
|
||||
return clear_table('exports')
|
||||
|
||||
|
||||
def delete_rows_from_table(table, row_ids):
|
||||
if row_ids and isinstance(row_ids, str):
|
||||
row_ids = list(map(helpers.cast_to_int, row_ids.split(',')))
|
||||
|
|
|
@ -970,6 +970,46 @@ def set_export_complete(export_id):
|
|||
db.upsert(table_name='exports', key_dict=keys, value_dict=values)
|
||||
|
||||
|
||||
def delete_export(export_id):
|
||||
db = database.MonitorDatabase()
|
||||
if str(export_id).isdigit():
|
||||
export_data = get_export(export_id=export_id)
|
||||
|
||||
logger.debug("Tautulli Exporter :: Deleting export_id %s from the database.", export_id)
|
||||
result = db.action('DELETE FROM exports WHERE id = ?', args=[export_id])
|
||||
|
||||
if export_data and export_data['exists']:
|
||||
filepath = get_export_filepath(export_data['filename'])
|
||||
logger.debug("Tautulli Exporter :: Deleting exported file from '%s'.", filepath)
|
||||
try:
|
||||
os.remove(filepath)
|
||||
except OSError as e:
|
||||
logger.error("Tautulli Exporter :: Failed to delete exported file '%s': %s", filepath, e)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def delete_all_exports():
|
||||
db = database.MonitorDatabase()
|
||||
result = db.select('SELECT filename FROM exports')
|
||||
|
||||
deleted_files = True
|
||||
for row in result:
|
||||
if check_export_exists(row['filename']):
|
||||
filepath = get_export_filepath(row['filename'])
|
||||
try:
|
||||
os.remove(filepath)
|
||||
except OSError as e:
|
||||
logger.error("Tautulli Exporter :: Failed to delete exported file '%s': %s", filepath, e)
|
||||
deleted_files = False
|
||||
break
|
||||
|
||||
if deleted_files:
|
||||
database.delete_exports()
|
||||
return True
|
||||
|
||||
|
||||
def get_export_datatable(section_id=None, rating_key=None, kwargs=None):
|
||||
default_return = {'recordsFiltered': 0,
|
||||
'recordsTotal': 0,
|
||||
|
@ -1004,7 +1044,7 @@ def get_export_datatable(section_id=None, rating_key=None, kwargs=None):
|
|||
join_evals=[],
|
||||
kwargs=kwargs)
|
||||
except Exception as e:
|
||||
logger.warn("Tautulli Exporter :: Unable to execute database query for get_export_datatable: %s." % e)
|
||||
logger.warn("Tautulli Exporter :: Unable to execute database query for get_export_datatable: %s.", e)
|
||||
return default_return
|
||||
|
||||
result = query['result']
|
||||
|
|
|
@ -6488,7 +6488,6 @@ class WebInterface(object):
|
|||
Required parameters:
|
||||
row_id (int): The row id of the exported file to download
|
||||
|
||||
|
||||
Optional parameters:
|
||||
None
|
||||
|
||||
|
@ -6517,7 +6516,6 @@ class WebInterface(object):
|
|||
Required parameters:
|
||||
row_id (int): The row id of the exported file to download
|
||||
|
||||
|
||||
Optional parameters:
|
||||
None
|
||||
|
||||
|
@ -6528,3 +6526,35 @@ class WebInterface(object):
|
|||
result = exporter.get_export(export_id=row_id)
|
||||
if result and result['complete'] and result['exists']:
|
||||
serve_download(path=exporter.get_export_filepath(result['filename']), name=result['filename'])
|
||||
|
||||
@cherrypy.expose
|
||||
@cherrypy.tools.json_out()
|
||||
@requireAuth(member_of("admin"))
|
||||
@addtoapi()
|
||||
def delete_export(self, row_id=None, delete_all=False, **kwargs):
|
||||
""" Delete exports from Tautulli.
|
||||
|
||||
```
|
||||
Required parameters:
|
||||
row_id (int): The row id of the exported file to delete
|
||||
|
||||
Optional parameters:
|
||||
delete_all (bool): 'true' to delete all exported files
|
||||
|
||||
Returns:
|
||||
None
|
||||
```
|
||||
"""
|
||||
if helpers.bool_true(delete_all):
|
||||
result = exporter.delete_all_exports()
|
||||
if result:
|
||||
return {'result': 'success', 'message': 'All exports deleted successfully.'}
|
||||
else:
|
||||
return {'result': 'error', 'message': 'Failed to delete all exports.'}
|
||||
|
||||
else:
|
||||
result = exporter.delete_export(export_id=row_id)
|
||||
if result:
|
||||
return {'result': 'success', 'message': 'Export deleted successfully.'}
|
||||
else:
|
||||
return {'result': 'error', 'message': 'Failed to delete export.'}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue