Add new movie to top of wanted list. closes #301

This commit is contained in:
Ruud committed 2012-05-23 23:00:27 +02:00
1 parent 75b734db72
commit 11958334ac
5 files changed
+59 -27

No files matched your search

+2 -2
View File
@@ -138,8 +138,8 @@ class LibraryPlugin(Plugin):
library = db.query(Library).filter_by(identifier = identifier).first() library = db.query(Library).filter_by(identifier = identifier).first()
if not library.info: if not library.info:
self.update(identifier) library_dict = self.update(identifier)
dates = library.get('info', {}).get('release_dates') dates = library_dict.get('info', {}).get('release_dates')
else: else:
dates = library.info.get('release_date') dates = library.info.get('release_date')
+16 -5
View File
@@ -287,7 +287,7 @@ class MoviePlugin(Plugin):
db = get_session() db = get_session()
m = db.query(Movie).filter_by(library_id = library.get('id')).first() m = db.query(Movie).filter_by(library_id = library.get('id')).first()
do_search = False added = True
if not m: if not m:
m = Movie( m = Movie(
library_id = library.get('id'), library_id = library.get('id'),
@@ -295,8 +295,13 @@ class MoviePlugin(Plugin):
status_id = status_active.get('id'), status_id = status_active.get('id'),
) )
db.add(m) db.add(m)
fireEvent('library.update', params.get('identifier'), default_title = params.get('title', '')) db.commit()
do_search = True
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: elif force_readd:
# Clean snatched history # Clean snatched history
for release in m.releases: for release in m.releases:
@@ -306,9 +311,11 @@ class MoviePlugin(Plugin):
m.profile_id = params.get('profile_id', default_profile.get('id')) m.profile_id = params.get('profile_id', default_profile.get('id'))
else: else:
log.debug('Movie already exists, not updating: %s' % params) log.debug('Movie already exists, not updating: %s' % params)
added = False
if force_readd: if force_readd:
m.status_id = status_active.get('id') m.status_id = status_active.get('id')
do_search = True
db.commit() db.commit()
@@ -321,8 +328,12 @@ class MoviePlugin(Plugin):
movie_dict = m.to_dict(self.default_dict) movie_dict = m.to_dict(self.default_dict)
if (force_readd or do_search) and search_after: if do_search and search_after:
fireEventAsync('searcher.single', movie_dict) onComplete = self.createOnComplete(m.id)
onComplete()
if added:
fireEvent('notify.frontend', type = 'movie.added', data = movie_dict)
#db.close() #db.close()
return movie_dict return movie_dict
+35 -17
View File
@@ -5,10 +5,12 @@ var MovieList = new Class({
options: { options: {
navigation: true, navigation: true,
limit: 50, limit: 50,
menu: [] menu: [],
add_new: false
}, },
movies: [], movies: [],
movies_added: [],
letters: {}, letters: {},
filter: { filter: {
'startswith': null, 'startswith': null,
@@ -30,6 +32,17 @@ var MovieList = new Class({
}) })
); );
self.getMovies(); 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(){ create: function(){
@@ -71,26 +84,31 @@ var MovieList = new Class({
} }
Object.each(movies, function(movie){ Object.each(movies, function(movie){
self.createMovie(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)
}); });
}, },
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(){ createNavigation: function(){
var self = this; var self = this;
var chars = '#ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var chars = '#ABCDEFGHIJKLMNOPQRSTUVWXYZ';
@@ -28,8 +28,10 @@ var Movie = new Class({
if(self.spinner){ if(self.spinner){
self.mask.fade('out'); self.mask.fade('out');
setTimeout(function(){ setTimeout(function(){
self.mask.destroy(); if(self.mask)
self.spinner.el.destroy(); self.mask.destroy();
if(self.spinner)
self.spinner.el.destroy();
self.spinner = null; self.spinner = null;
self.mask = null; self.mask = null;
}, 400); }, 400);
+2 -1
View File
@@ -14,7 +14,8 @@ Page.Wanted = new Class({
self.wanted = new MovieList({ self.wanted = new MovieList({
'identifier': 'wanted', 'identifier': 'wanted',
'status': 'active', 'status': 'active',
'actions': MovieActions 'actions': MovieActions,
'add_new': true
}); });
$(self.wanted).inject(self.el); $(self.wanted).inject(self.el);
} }