From f7911fe9f30cced0d6c19db5142604d614db2017 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 18 Dec 2012 14:14:06 +0100 Subject: [PATCH] Remove release on new scan --- couchpotato/core/plugins/manage/main.py | 33 +++++++++++++++++++++---- couchpotato/core/settings/model.py | 2 +- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/couchpotato/core/plugins/manage/main.py b/couchpotato/core/plugins/manage/main.py index f9e1c4c3..40336e5f 100644 --- a/couchpotato/core/plugins/manage/main.py +++ b/couchpotato/core/plugins/manage/main.py @@ -115,12 +115,35 @@ class Manage(Plugin): 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(ss(release_file['path'])): - fireEvent('release.clean', release['id']) - break + if len(release.get('files', [])) == 0: + fireEvent('release.delete', release['id']) + else: + for release_file in release.get('files', []): + # Remove release not available anymore + if not os.path.isfile(ss(release_file['path'])): + fireEvent('release.clean', release['id']) + break + + # Check if there are duplicate releases (different quality) use the last one, delete the rest + if len(done_movie.get('releases', [])) > 1: + used_files = {} + for release in done_movie.get('releases', []): + + for release_file in release.get('files', []): + already_used = used_files.get(release_file['path']) + + if already_used: + print already_used, release['id'] + if already_used < release['id']: + fireEvent('release.delete', release['id'], single = True) # delete this one + else: + fireEvent('release.delete', already_used, single = True) # delete previous one + break + else: + used_files[release_file['path']] = release.get('id') + del used_files Env.prop('manage.last_update', time.time()) except: diff --git a/couchpotato/core/settings/model.py b/couchpotato/core/settings/model.py index 2ecb48ae..64117fb4 100644 --- a/couchpotato/core/settings/model.py +++ b/couchpotato/core/settings/model.py @@ -100,7 +100,7 @@ class Release(Entity): movie = ManyToOne('Movie') status = ManyToOne('Status') quality = ManyToOne('Quality') - files = ManyToMany('File', cascade = 'all, delete-orphan', single_parent = True) + files = ManyToMany('File') info = OneToMany('ReleaseInfo', cascade = 'all, delete-orphan') def to_dict(self, deep = {}, exclude = []):