Clean unavailable files on full scan. fix #455
This commit is contained in:
@@ -73,6 +73,13 @@ class Manage(Plugin):
|
||||
for done_movie in done_movies:
|
||||
if done_movie['library']['identifier'] not in added_identifiers:
|
||||
fireEvent('movie.delete', movie_id = done_movie['id'], delete_from = 'all')
|
||||
else:
|
||||
for release in done_movie.get('releases', []):
|
||||
for release_file in release.get('files', []):
|
||||
# Remove release not available anymore
|
||||
if not os.path.isfile(release_file['path']):
|
||||
fireEvent('release.clean', release['id'])
|
||||
break
|
||||
|
||||
Env.prop('manage.last_update', time.time())
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ from couchpotato.core.plugins.base import Plugin
|
||||
from couchpotato.core.plugins.scanner.main import Scanner
|
||||
from couchpotato.core.settings.model import File, Release as Relea, Movie
|
||||
from sqlalchemy.sql.expression import and_, or_
|
||||
import os
|
||||
|
||||
log = CPLog(__name__)
|
||||
|
||||
@@ -22,7 +23,7 @@ class Release(Plugin):
|
||||
'id': {'type': 'id', 'desc': 'ID of the release object in release-table'}
|
||||
}
|
||||
})
|
||||
addApiView('release.delete', self.delete, docs = {
|
||||
addApiView('release.delete', self.deleteView, docs = {
|
||||
'desc': 'Delete releases',
|
||||
'params': {
|
||||
'id': {'type': 'id', 'desc': 'ID of the release object in release-table'}
|
||||
@@ -35,6 +36,9 @@ class Release(Plugin):
|
||||
}
|
||||
})
|
||||
|
||||
addEvent('release.delete', self.delete)
|
||||
addEvent('release.clean', self.clean)
|
||||
|
||||
def add(self, group):
|
||||
db = get_session()
|
||||
|
||||
@@ -99,20 +103,41 @@ class Release(Plugin):
|
||||
# Check database and update/insert if necessary
|
||||
return fireEvent('file.add', path = filepath, part = fireEvent('scanner.partnumber', file, single = True), type_tuple = Scanner.file_types.get(type), properties = properties, single = True)
|
||||
|
||||
def delete(self):
|
||||
def deleteView(self):
|
||||
|
||||
release_id = getParam('id')
|
||||
|
||||
#db.close()
|
||||
return jsonified({
|
||||
'success': self.delete(release_id)
|
||||
})
|
||||
|
||||
def delete(self, id):
|
||||
|
||||
db = get_session()
|
||||
id = getParam('id')
|
||||
|
||||
rel = db.query(Relea).filter_by(id = id).first()
|
||||
if rel:
|
||||
rel.delete()
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
#db.close()
|
||||
return jsonified({
|
||||
'success': True
|
||||
})
|
||||
return False
|
||||
|
||||
def clean(self, id):
|
||||
|
||||
db = get_session()
|
||||
|
||||
rel = db.query(Relea).filter_by(id = id).first()
|
||||
if rel:
|
||||
for release_file in rel.files:
|
||||
if not os.path.isfile(release_file.path):
|
||||
db.delete(release_file)
|
||||
db.commit()
|
||||
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def ignore(self):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user