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

This commit is contained in:
Ruud
2012-05-23 23:00:27 +02:00
parent 75b734db72
commit 11958334ac
5 changed files with 59 additions and 27 deletions
+2 -2
View File
@@ -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')
+16 -5
View File
@@ -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
+35 -17
View File
@@ -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';
@@ -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);
+2 -1
View File
@@ -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);
}