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: for done_movie in done_movies:
if done_movie['library']['identifier'] not in added_identifiers: if done_movie['library']['identifier'] not in added_identifiers:
fireEvent('movie.delete', movie_id = done_movie['id'], delete_from = 'all') 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()) 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.plugins.scanner.main import Scanner
from couchpotato.core.settings.model import File, Release as Relea, Movie from couchpotato.core.settings.model import File, Release as Relea, Movie
from sqlalchemy.sql.expression import and_, or_ from sqlalchemy.sql.expression import and_, or_
import os
log = CPLog(__name__) log = CPLog(__name__)
@ -22,7 +23,7 @@ class Release(Plugin):
'id': {'type': 'id', 'desc': 'ID of the release object in release-table'} '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', 'desc': 'Delete releases',
'params': { 'params': {
'id': {'type': 'id', 'desc': 'ID of the release object in release-table'} '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): def add(self, group):
db = get_session() db = get_session()
@ -99,20 +103,41 @@ class Release(Plugin):
# Check database and update/insert if necessary # 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) 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() db = get_session()
id = getParam('id')
rel = db.query(Relea).filter_by(id = id).first() rel = db.query(Relea).filter_by(id = id).first()
if rel: if rel:
rel.delete() rel.delete()
db.commit() db.commit()
return True
#db.close() return False
return jsonified({
'success': True 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): def ignore(self):

Loading…
Cancel
Save