diff --git a/couchpotato/core/plugins/library/main.py b/couchpotato/core/plugins/library/main.py index 0e4fc8cc..a7960d7c 100644 --- a/couchpotato/core/plugins/library/main.py +++ b/couchpotato/core/plugins/library/main.py @@ -138,8 +138,8 @@ class LibraryPlugin(Plugin): library = db.query(Library).filter_by(identifier = identifier).first() if not library.info: - self.update(identifier) - dates = library.get('info', {}).get('release_dates') + library_dict = self.update(identifier) + dates = library_dict.get('info', {}).get('release_dates') else: dates = library.info.get('release_date') diff --git a/couchpotato/core/plugins/movie/main.py b/couchpotato/core/plugins/movie/main.py index de307799..70ee39a5 100644 --- a/couchpotato/core/plugins/movie/main.py +++ b/couchpotato/core/plugins/movie/main.py @@ -287,7 +287,7 @@ class MoviePlugin(Plugin): db = get_session() m = db.query(Movie).filter_by(library_id = library.get('id')).first() - do_search = False + added = True if not m: m = Movie( library_id = library.get('id'), @@ -295,8 +295,13 @@ class MoviePlugin(Plugin): status_id = status_active.get('id'), ) db.add(m) - fireEvent('library.update', params.get('identifier'), default_title = params.get('title', '')) - do_search = True + db.commit() + + onComplete = None + if search_after: + onComplete = self.createOnComplete(m.id) + + fireEventAsync('library.update', params.get('identifier'), default_title = params.get('title', ''), on_complete = onComplete) elif force_readd: # Clean snatched history for release in m.releases: @@ -306,9 +311,11 @@ class MoviePlugin(Plugin): m.profile_id = params.get('profile_id', default_profile.get('id')) else: log.debug('Movie already exists, not updating: %s' % params) + added = False if force_readd: m.status_id = status_active.get('id') + do_search = True db.commit() @@ -321,8 +328,12 @@ class MoviePlugin(Plugin): movie_dict = m.to_dict(self.default_dict) - if (force_readd or do_search) and search_after: - fireEventAsync('searcher.single', movie_dict) + if do_search and search_after: + onComplete = self.createOnComplete(m.id) + onComplete() + + if added: + fireEvent('notify.frontend', type = 'movie.added', data = movie_dict) #db.close() return movie_dict diff --git a/couchpotato/core/plugins/movie/static/list.js b/couchpotato/core/plugins/movie/static/list.js index 23bdcf89..e8266acb 100644 --- a/couchpotato/core/plugins/movie/static/list.js +++ b/couchpotato/core/plugins/movie/static/list.js @@ -5,10 +5,12 @@ var MovieList = new Class({ options: { navigation: true, limit: 50, - menu: [] + menu: [], + add_new: false }, movies: [], + movies_added: [], letters: {}, filter: { 'startswith': null, @@ -30,6 +32,17 @@ var MovieList = new Class({ }) ); self.getMovies(); + + if(options.add_new) + App.addEvent('movie.added', self.movieAdded.bind(self)) + }, + + movieAdded: function(notification){ + var self = this; + window.scroll(0,0); + + if(self.movies_added[notification.data.id]) + self.createMovie(notification.data, 'top'); }, create: function(){ @@ -71,26 +84,31 @@ var MovieList = new Class({ } Object.each(movies, function(movie){ - - // Attach proper actions - var a = self.options.actions, - status = Status.get(movie.status_id); - var actions = a[status.identifier.capitalize()] || a.Wanted || {}; - - var m = new Movie(self, { - 'actions': actions, - 'view': self.current_view, - 'onSelect': self.calculateSelected.bind(self) - }, movie); - $(m).inject(self.movie_list); - m.fireEvent('injected'); - - self.movies.include(m) - + self.createMovie(movie); }); }, + createMovie: function(movie, inject_at){ + var self = this; + + // Attach proper actions + var a = self.options.actions, + status = Status.get(movie.status_id); + var actions = a[status.identifier.capitalize()] || a.Wanted || {}; + + var m = new Movie(self, { + 'actions': actions, + 'view': self.current_view, + 'onSelect': self.calculateSelected.bind(self) + }, movie); + $(m).inject(self.movie_list, inject_at || 'bottom'); + m.fireEvent('injected'); + + self.movies.include(m) + self.movies_added.include(movie.id); + }, + createNavigation: function(){ var self = this; var chars = '#ABCDEFGHIJKLMNOPQRSTUVWXYZ'; diff --git a/couchpotato/core/plugins/movie/static/movie.js b/couchpotato/core/plugins/movie/static/movie.js index 57b58dc7..c93a98ea 100644 --- a/couchpotato/core/plugins/movie/static/movie.js +++ b/couchpotato/core/plugins/movie/static/movie.js @@ -28,8 +28,10 @@ var Movie = new Class({ if(self.spinner){ self.mask.fade('out'); setTimeout(function(){ - self.mask.destroy(); - self.spinner.el.destroy(); + if(self.mask) + self.mask.destroy(); + if(self.spinner) + self.spinner.el.destroy(); self.spinner = null; self.mask = null; }, 400); diff --git a/couchpotato/static/scripts/page/wanted.js b/couchpotato/static/scripts/page/wanted.js index 9566058e..2ec49e2b 100644 --- a/couchpotato/static/scripts/page/wanted.js +++ b/couchpotato/static/scripts/page/wanted.js @@ -14,7 +14,8 @@ Page.Wanted = new Class({ self.wanted = new MovieList({ 'identifier': 'wanted', 'status': 'active', - 'actions': MovieActions + 'actions': MovieActions, + 'add_new': true }); $(self.wanted).inject(self.el); }