Browse Source

Clean unavailable files on full scan. fix #455

pull/584/head
Ruud 13 years ago
parent
commit
974f2d040d
  1. 7
      couchpotato/core/plugins/manage/main.py
  2. 39
      couchpotato/core/plugins/release/main.py

7
couchpotato/core/plugins/manage/main.py

@ -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())

39
couchpotato/core/plugins/release/main.py

@ -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):

Loading…
Cancel
Save