From 353916be2db1c2c2e63108d5a2e57263919d88d1 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 29 Apr 2012 23:00:27 +0200 Subject: [PATCH] Only delete movie from selected list. fixes #176 --- couchpotato/core/plugins/movie/main.py | 34 ++++++++++++++++--- couchpotato/core/plugins/movie/static/list.js | 3 +- .../core/plugins/movie/static/movie.js | 3 +- couchpotato/static/scripts/page/wanted.js | 3 +- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/couchpotato/core/plugins/movie/main.py b/couchpotato/core/plugins/movie/main.py index e18d000d..62dfac2a 100644 --- a/couchpotato/core/plugins/movie/main.py +++ b/couchpotato/core/plugins/movie/main.py @@ -79,6 +79,7 @@ class MoviePlugin(Plugin): 'desc': 'Delete a movie from the wanted list', 'params': { 'id': {'desc': 'Movie ID(s) you want to delete.', 'type': 'int (comma separated)'}, + 'delete_from': {'desc': 'Delete movie from this page', 'type': 'string: all (default), wanted, manage'}, } }) @@ -358,20 +359,45 @@ class MoviePlugin(Plugin): ids = [x.strip() for x in params.get('id').split(',')] for movie_id in ids: - self.delete(movie_id) + self.delete(movie_id, delete_from = params.get('delete_from', 'all')) return jsonified({ 'success': True, }) - def delete(self, movie_id): + def delete(self, movie_id, delete_from = None): db = get_session() movie = db.query(Movie).filter_by(id = movie_id).first() if movie: - db.delete(movie) - db.commit() + if delete_from == 'all': + db.delete(movie) + db.commit() + else: + done_status = fireEvent('status.get', 'done', single = True) + + total_releases = len(movie.releases) + total_deleted = 0 + new_movie_status = None + for release in movie.releases: + if delete_from == 'wanted' and release.status_id != done_status.get('id'): + db.delete(release) + total_deleted += 1 + new_movie_status = 'done' + elif delete_from == 'manage' and release.status_id == done_status.get('id'): + db.delete(release) + total_deleted += 1 + new_movie_status = 'active' + db.commit() + + if total_releases == total_deleted: + db.delete(movie) + db.commit() + elif new_movie_status: + new_status = fireEvent('status.get', new_movie_status, single = True) + movie.status_id = new_status.get('id') + db.commit() return True diff --git a/couchpotato/core/plugins/movie/static/list.js b/couchpotato/core/plugins/movie/static/list.js index c3c177af..becdc141 100644 --- a/couchpotato/core/plugins/movie/static/list.js +++ b/couchpotato/core/plugins/movie/static/list.js @@ -253,7 +253,8 @@ var MovieList = new Class({ (e).preventDefault(); Api.request('movie.delete', { 'data': { - 'id': ids.join(',') + 'id': ids.join(','), + 'delete_from': self.options.identifier }, 'onSuccess': function(){ qObj.close(); diff --git a/couchpotato/core/plugins/movie/static/movie.js b/couchpotato/core/plugins/movie/static/movie.js index 5544ed4e..78e00fd0 100644 --- a/couchpotato/core/plugins/movie/static/movie.js +++ b/couchpotato/core/plugins/movie/static/movie.js @@ -4,11 +4,12 @@ var Movie = new Class({ action: {}, - initialize: function(self, options, data){ + initialize: function(list, options, data){ var self = this; self.data = data; self.view = options.view || 'thumbs'; + self.list = list; self.profile = Quality.getProfile(data.profile_id) || {}; self.parent(self, options); diff --git a/couchpotato/static/scripts/page/wanted.js b/couchpotato/static/scripts/page/wanted.js index af6d774c..ef7ddc88 100644 --- a/couchpotato/static/scripts/page/wanted.js +++ b/couchpotato/static/scripts/page/wanted.js @@ -206,7 +206,8 @@ window.addEvent('domready', function(){ function(){ Api.request('movie.delete', { 'data': { - 'id': self.movie.get('id') + 'id': self.movie.get('id'), + 'delete_from': self.movie.list.options.identifier }, 'onComplete': function(){ movie.set('tween', {