From d1c3f0c24134f3c6fbb742f0debf1cacdb903e35 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 8 Oct 2013 09:57:36 +0200 Subject: [PATCH] Use Media for all Movie db actions --- couchpotato/core/media/__init__.py | 6 +-- couchpotato/core/media/_base/media/main.py | 4 +- couchpotato/core/media/_base/searcher/main.py | 4 +- couchpotato/core/media/movie/_base/main.py | 42 +++++++++---------- couchpotato/core/media/movie/searcher/main.py | 8 ++-- .../core/media/movie/suggestion/main.py | 10 ++--- couchpotato/core/plugins/category/main.py | 4 +- couchpotato/core/plugins/dashboard/main.py | 16 +++---- couchpotato/core/plugins/profile/main.py | 4 +- couchpotato/core/plugins/release/main.py | 8 ++-- couchpotato/core/plugins/scanner/main.py | 2 +- 11 files changed, 54 insertions(+), 54 deletions(-) diff --git a/couchpotato/core/media/__init__.py b/couchpotato/core/media/__init__.py index cdf667c9..e6a249d5 100644 --- a/couchpotato/core/media/__init__.py +++ b/couchpotato/core/media/__init__.py @@ -1,7 +1,7 @@ from couchpotato import get_session from couchpotato.core.event import addEvent, fireEventAsync, fireEvent from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Movie +from couchpotato.core.settings.model import Media class MediaBase(Plugin): @@ -27,7 +27,7 @@ class MediaBase(Plugin): def onComplete(): db = get_session() - media = db.query(Movie).filter_by(id = id).first() + media = db.query(Media).filter_by(id = id).first() fireEventAsync('%s.searcher.single' % media.type, media.to_dict(self.default_dict), on_complete = self.createNotifyFront(id)) db.expire_all() @@ -37,7 +37,7 @@ class MediaBase(Plugin): def notifyFront(): db = get_session() - media = db.query(Movie).filter_by(id = media_id).first() + media = db.query(Media).filter_by(id = media_id).first() fireEvent('notify.frontend', type = '%s.update.%s' % (media.type, media.id), data = media.to_dict(self.default_dict)) db.expire_all() diff --git a/couchpotato/core/media/_base/media/main.py b/couchpotato/core/media/_base/media/main.py index d0ddf113..87afb82a 100644 --- a/couchpotato/core/media/_base/media/main.py +++ b/couchpotato/core/media/_base/media/main.py @@ -4,7 +4,7 @@ from couchpotato.core.event import fireEvent, fireEventAsync, addEvent from couchpotato.core.helpers.variable import splitString from couchpotato.core.logger import CPLog from couchpotato.core.media import MediaBase -from couchpotato.core.settings.model import Movie +from couchpotato.core.settings.model import Media log = CPLog(__name__) @@ -26,7 +26,7 @@ class MediaPlugin(MediaBase): db = get_session() for x in splitString(id): - media = db.query(Movie).filter_by(id = x).first() + media = db.query(Media).filter_by(id = x).first() if media: # Get current selected title diff --git a/couchpotato/core/media/_base/searcher/main.py b/couchpotato/core/media/_base/searcher/main.py index 934a1472..b6b36125 100644 --- a/couchpotato/core/media/_base/searcher/main.py +++ b/couchpotato/core/media/_base/searcher/main.py @@ -5,7 +5,7 @@ from couchpotato.core.helpers.encoding import simplifyString, toUnicode from couchpotato.core.helpers.variable import md5, getTitle from couchpotato.core.logger import CPLog from couchpotato.core.media._base.searcher.base import SearcherBase -from couchpotato.core.settings.model import Movie, Release, ReleaseInfo +from couchpotato.core.settings.model import Media, Release, ReleaseInfo from couchpotato.environment import Env from inspect import ismethod, isfunction import datetime @@ -104,7 +104,7 @@ class Searcher(SearcherBase): if profile_type['quality_id'] == rls.quality.id and profile_type['finish']: # Mark movie done log.info('Renamer disabled, marking movie as finished: %s', log_movie) - mvie = db.query(Movie).filter_by(id = movie['id']).first() + mvie = db.query(Media).filter_by(id = movie['id']).first() mvie.status_id = done_status.get('id') mvie.last_edit = int(time.time()) db.commit() diff --git a/couchpotato/core/media/movie/_base/main.py b/couchpotato/core/media/movie/_base/main.py index 494c460e..4f39733d 100644 --- a/couchpotato/core/media/movie/_base/main.py +++ b/couchpotato/core/media/movie/_base/main.py @@ -6,7 +6,7 @@ from couchpotato.core.helpers.variable import getImdb, splitString, tryInt, \ mergeDicts from couchpotato.core.logger import CPLog from couchpotato.core.media.movie import MovieTypeBase -from couchpotato.core.settings.model import Library, LibraryTitle, Movie, \ +from couchpotato.core.settings.model import Library, LibraryTitle, Media, \ Release from couchpotato.environment import Env from sqlalchemy.orm import joinedload_all @@ -96,8 +96,8 @@ class MovieBase(MovieTypeBase): db = get_session() # get movies last_edit more than a week ago - movies = db.query(Movie) \ - .filter(Movie.status_id == done_status.get('id'), Movie.last_edit < (now - week)) \ + movies = db.query(Media) \ + .filter(Media.status_id == done_status.get('id'), Media.last_edit < (now - week)) \ .all() for movie in movies: @@ -123,9 +123,9 @@ class MovieBase(MovieTypeBase): imdb_id = getImdb(str(movie_id)) if imdb_id: - m = db.query(Movie).filter(Movie.library.has(identifier = imdb_id)).first() + m = db.query(Media).filter(Media.library.has(identifier = imdb_id)).first() else: - m = db.query(Movie).filter_by(id = movie_id).first() + m = db.query(Media).filter_by(id = movie_id).first() results = None if m: @@ -145,20 +145,20 @@ class MovieBase(MovieTypeBase): release_status = [release_status] # query movie ids - q = db.query(Movie) \ - .with_entities(Movie.id) \ - .group_by(Movie.id) + q = db.query(Media) \ + .with_entities(Media.id) \ + .group_by(Media.id) # Filter on movie status if status and len(status) > 0: statuses = fireEvent('status.get', status, single = len(status) > 1) statuses = [s.get('id') for s in statuses] - q = q.filter(Movie.status_id.in_(statuses)) + q = q.filter(Media.status_id.in_(statuses)) # Filter on release status if release_status and len(release_status) > 0: - q = q.join(Movie.releases) + q = q.join(Media.releases) statuses = fireEvent('status.get', release_status, single = len(release_status) > 1) statuses = [s.get('id') for s in statuses] @@ -167,7 +167,7 @@ class MovieBase(MovieTypeBase): # Only join when searching / ordering if starts_with or search or order != 'release_order': - q = q.join(Movie.library, Library.titles) \ + q = q.join(Media.library, Library.titles) \ .filter(LibraryTitle.default == True) # Add search filters @@ -218,13 +218,13 @@ class MovieBase(MovieTypeBase): releases_count[release.movie_id] += 1 # Get main movie data - q2 = db.query(Movie) \ + q2 = db.query(Media) \ .options(joinedload_all('library.titles')) \ .options(joinedload_all('library.files')) \ .options(joinedload_all('status')) \ .options(joinedload_all('files')) - q2 = q2.filter(Movie.id.in_(movie_ids)) + q2 = q2.filter(Media.id.in_(movie_ids)) results = q2.all() @@ -267,14 +267,14 @@ class MovieBase(MovieTypeBase): if release_status and not isinstance(release_status, (list, tuple)): release_status = [release_status] - q = db.query(Movie) + q = db.query(Media) # Filter on movie status if status and len(status) > 0: statuses = fireEvent('status.get', status, single = len(release_status) > 1) statuses = [s.get('id') for s in statuses] - q = q.filter(Movie.status_id.in_(statuses)) + q = q.filter(Media.status_id.in_(statuses)) # Filter on release status if release_status and len(release_status) > 0: @@ -282,7 +282,7 @@ class MovieBase(MovieTypeBase): statuses = fireEvent('status.get', release_status, single = len(release_status) > 1) statuses = [s.get('id') for s in statuses] - q = q.join(Movie.releases) \ + q = q.join(Media.releases) \ .filter(Release.status_id.in_(statuses)) q = q.join(Library, LibraryTitle) \ @@ -392,12 +392,12 @@ class MovieBase(MovieTypeBase): cat_id = params.get('category_id') db = get_session() - m = db.query(Movie).filter_by(library_id = library.get('id')).first() + m = db.query(Media).filter_by(library_id = library.get('id')).first() added = True do_search = False search_after = search_after and self.conf('search_on_add', section = 'moviesearcher') if not m: - m = Movie( + m = Media( library_id = library.get('id'), profile_id = params.get('profile_id', default_profile.get('id')), status_id = status_id if status_id else status_active.get('id'), @@ -471,7 +471,7 @@ class MovieBase(MovieTypeBase): ids = splitString(id) for movie_id in ids: - m = db.query(Movie).filter_by(id = movie_id).first() + m = db.query(Media).filter_by(id = movie_id).first() if not m: continue @@ -518,7 +518,7 @@ class MovieBase(MovieTypeBase): db = get_session() - movie = db.query(Movie).filter_by(id = movie_id).first() + movie = db.query(Media).filter_by(id = movie_id).first() if movie: deleted = False if delete_from == 'all': @@ -568,7 +568,7 @@ class MovieBase(MovieTypeBase): db = get_session() - m = db.query(Movie).filter_by(id = movie_id).first() + m = db.query(Media).filter_by(id = movie_id).first() if not m or len(m.library.titles) == 0: log.debug('Can\'t restatus movie, doesn\'t seem to exist.') return False diff --git a/couchpotato/core/media/movie/searcher/main.py b/couchpotato/core/media/movie/searcher/main.py index b08e7532..79d2ed84 100644 --- a/couchpotato/core/media/movie/searcher/main.py +++ b/couchpotato/core/media/movie/searcher/main.py @@ -7,7 +7,7 @@ from couchpotato.core.helpers.variable import md5, getTitle, splitString, \ from couchpotato.core.logger import CPLog from couchpotato.core.media._base.searcher.base import SearcherBase from couchpotato.core.media.movie import MovieTypeBase -from couchpotato.core.settings.model import Movie, Release, ReleaseInfo +from couchpotato.core.settings.model import Media, Release, ReleaseInfo from couchpotato.environment import Env from datetime import date from sqlalchemy.exc import InterfaceError @@ -74,8 +74,8 @@ class MovieSearcher(SearcherBase, MovieTypeBase): db = get_session() - movies = db.query(Movie).filter( - Movie.status.has(identifier = 'active') + movies = db.query(Media).filter( + Media.status.has(identifier = 'active') ).all() random.shuffle(movies) @@ -182,7 +182,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase): sorted_results = sorted(sorted_results, key = lambda k: k['protocol'][:3], reverse = (download_preference == 'torrent')) # Check if movie isn't deleted while searching - if not db.query(Movie).filter_by(id = movie.get('id')).first(): + if not db.query(Media).filter_by(id = movie.get('id')).first(): break # Add them to this movie releases list diff --git a/couchpotato/core/media/movie/suggestion/main.py b/couchpotato/core/media/movie/suggestion/main.py index eb31d26e..f29281ea 100644 --- a/couchpotato/core/media/movie/suggestion/main.py +++ b/couchpotato/core/media/movie/suggestion/main.py @@ -3,7 +3,7 @@ from couchpotato.api import addApiView from couchpotato.core.event import fireEvent from couchpotato.core.helpers.variable import splitString from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Movie, Library +from couchpotato.core.settings.model import Media, Library from couchpotato.environment import Env from sqlalchemy.orm import joinedload_all from sqlalchemy.sql.expression import or_ @@ -29,9 +29,9 @@ class Suggestion(Plugin): if not movies or len(movies) == 0: db = get_session() - active_movies = db.query(Movie) \ + active_movies = db.query(Media) \ .options(joinedload_all('library')) \ - .filter(or_(*[Movie.status.has(identifier = s) for s in ['active', 'done']])).all() + .filter(or_(*[Media.status.has(identifier = s) for s in ['active', 'done']])).all() movies = [x.library.identifier for x in active_movies] if not ignored or len(ignored) == 0: @@ -89,10 +89,10 @@ class Suggestion(Plugin): active_status, done_status = fireEvent('status.get', ['active', 'done'], single = True) db = get_session() - active_movies = db.query(Movie) \ + active_movies = db.query(Media) \ .join(Library) \ .with_entities(Library.identifier) \ - .filter(Movie.status_id.in_([active_status.get('id'), done_status.get('id')])).all() + .filter(Media.status_id.in_([active_status.get('id'), done_status.get('id')])).all() movies = [x[0] for x in active_movies] movies.extend(seen) diff --git a/couchpotato/core/plugins/category/main.py b/couchpotato/core/plugins/category/main.py index d13a74a3..87cd0ea4 100644 --- a/couchpotato/core/plugins/category/main.py +++ b/couchpotato/core/plugins/category/main.py @@ -4,7 +4,7 @@ from couchpotato.core.event import addEvent from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Movie, Category +from couchpotato.core.settings.model import Media, Category log = CPLog(__name__) @@ -113,7 +113,7 @@ class CategoryPlugin(Plugin): def removeFromMovie(self, category_id): db = get_session() - movies = db.query(Movie).filter(Movie.category_id == category_id).all() + movies = db.query(Media).filter(Media.category_id == category_id).all() if len(movies) > 0: for movie in movies: diff --git a/couchpotato/core/plugins/dashboard/main.py b/couchpotato/core/plugins/dashboard/main.py index f006ac41..4f4d85ab 100644 --- a/couchpotato/core/plugins/dashboard/main.py +++ b/couchpotato/core/plugins/dashboard/main.py @@ -4,7 +4,7 @@ from couchpotato.core.event import fireEvent from couchpotato.core.helpers.variable import splitString, tryInt from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Movie, Library, LibraryTitle, \ +from couchpotato.core.settings.model import Media, Library, LibraryTitle, \ Release from sqlalchemy.orm import joinedload_all from sqlalchemy.sql.expression import asc, or_ @@ -50,12 +50,12 @@ class Dashboard(Plugin): # Get all active movies active_status, ignored_status = fireEvent('status.get', ['active', 'ignored'], single = True) - q = db.query(Movie) \ + q = db.query(Media) \ .join(Library) \ - .outerjoin(Movie.releases) \ - .filter(Movie.status_id == active_status.get('id')) \ - .with_entities(Movie.id, Movie.profile_id, Library.info, Library.year) \ - .group_by(Movie.id) \ + .outerjoin(Media.releases) \ + .filter(Media.status_id == active_status.get('id')) \ + .with_entities(Media.id, Media.profile_id, Library.info, Library.year) \ + .group_by(Media.id) \ .filter(or_(Release.id == None, Release.status_id == ignored_status.get('id'))) if not random: @@ -101,11 +101,11 @@ class Dashboard(Plugin): if len(movie_ids) > 0: # Get all movie information - movies_raw = db.query(Movie) \ + movies_raw = db.query(Media) \ .options(joinedload_all('library.titles')) \ .options(joinedload_all('library.files')) \ .options(joinedload_all('files')) \ - .filter(Movie.id.in_(movie_ids)) \ + .filter(Media.id.in_(movie_ids)) \ .all() # Create dict by movie id diff --git a/couchpotato/core/plugins/profile/main.py b/couchpotato/core/plugins/profile/main.py index 68ab9360..9ff3ead2 100644 --- a/couchpotato/core/plugins/profile/main.py +++ b/couchpotato/core/plugins/profile/main.py @@ -4,7 +4,7 @@ from couchpotato.core.event import addEvent, fireEvent from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Profile, ProfileType, Movie +from couchpotato.core.settings.model import Profile, ProfileType, Media from sqlalchemy.orm import joinedload_all log = CPLog(__name__) @@ -38,7 +38,7 @@ class ProfilePlugin(Plugin): active_status = fireEvent('status.get', 'active', single = True) db = get_session() - movies = db.query(Movie).filter(Movie.status_id == active_status.get('id'), Movie.profile == None).all() + movies = db.query(Media).filter(Media.status_id == active_status.get('id'), Media.profile == None).all() if len(movies) > 0: default_profile = self.default() diff --git a/couchpotato/core/plugins/release/main.py b/couchpotato/core/plugins/release/main.py index e8d1815f..e6726635 100644 --- a/couchpotato/core/plugins/release/main.py +++ b/couchpotato/core/plugins/release/main.py @@ -5,12 +5,12 @@ from couchpotato.core.helpers.encoding import ss from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin from couchpotato.core.plugins.scanner.main import Scanner -from couchpotato.core.settings.model import File, Release as Relea, Movie +from couchpotato.core.settings.model import File, Release as Relea, Media from sqlalchemy.orm import joinedload_all from sqlalchemy.sql.expression import and_, or_ import os -import traceback import time +import traceback log = CPLog(__name__) @@ -60,9 +60,9 @@ class Release(Plugin): done_status, snatched_status = fireEvent('status.get', ['done', 'snatched'], single = True) # Add movie - movie = db.query(Movie).filter_by(library_id = group['library'].get('id')).first() + movie = db.query(Media).filter_by(library_id = group['library'].get('id')).first() if not movie: - movie = Movie( + movie = Media( library_id = group['library'].get('id'), profile_id = 0, status_id = done_status.get('id') diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index 58627093..afbfa741 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -415,7 +415,7 @@ class Scanner(Plugin): if not group['library']: log.error('Unable to determine movie: %s', group['identifiers']) else: - movie = db.query(Movie).filter_by(library_id = group['library']['id']).first() + movie = db.query(Media).filter_by(library_id = group['library']['id']).first() group['movie_id'] = None if not movie else movie.id processed_movies[identifier] = group