Ejemplo n.º 1
0
    def show(self, movie_id, dummy):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        # last ratings
        last_ratings = self.session.query(Rating.rating, User)\
                           .join((User, and_(User.id == Rating.user_id,
                                             Rating.movie == movie)))\
                           .order_by(Rating.rated.desc()).all()

        if len(last_ratings) == 0:
            avg_rating = None
        else:
            avg_rating = sum(r.rating for r in last_ratings) * .5 / len(last_ratings)

        # user rating
        if self.user is not None:
            try:
                self.view['rating'] = Rating.load(self.session, movie=movie, user=self.user)
            except NoResultFound:
                pass

        self.view.update({'movie': movie,
                          'meta': movie.get_meta(),
                          'last_ratings': last_ratings,
                          'avg_rating': avg_rating})
        self.template = 'movie.phtml'
Ejemplo n.º 2
0
    def update_movie(self, movie_id):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')


        title, year, poster, director, screenwriter, actors, imdbid = [self.request.form[key]
            for key in 'title, year, poster, director, screenwriter, actors, imdbid'.split(', ')]

        year = int(year)

        movie.title = title
        movie.year = year
        movie.img = poster

        if imdbid==movie.imdbid:
            meta = dict(movie.get_meta())
            meta['Director'] = reformat_cast(director)
            meta['Writer'] = reformat_cast(screenwriter)
            meta['Actors'] = reformat_cast(actors)
            movie.meta = meta

        else:
            imdbid = imdbid.strip()
            if 'imdb.com' in imdbid:
                imdbid = imdbid.split("title/")[1].split("/")[0]

            movie.imdbid = imdbid
            movie.meta = None
            movie.get_meta()

        self.session.flush()

        return self.redirect('/mod/movie/%d' % movie_id)
Ejemplo n.º 3
0
    def movie(self, movie_id):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        self.view['movie'] = movie
        self.view['meta'] = movie.get_meta()
        self.template = 'mod/movie.phtml'
Ejemplo n.º 4
0
    def movie(self, movie_id):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        self.view['movie'] = movie
        self.view['meta'] = movie.get_meta()
        self.template = 'mod/movie.phtml'
Ejemplo n.º 5
0
    def partial(self, movie_id):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return

        meta = movie.get_meta()
        self.view.update({'movie': movie,
                          'meta': meta})
        self.template = 'partials/movie.phtml'
Ejemplo n.º 6
0
 def togglewatchlist(self):
     movie_id = int(self.request.form['movie_id'])
     movie = Movie.load(self.session, id=movie_id)
     if movie in self.user.watchlist:
         self.user.watchlist.remove(movie)
     else:
         # checked if already seen
         try:
             Rating.load(self.session, movie=movie, user=self.user)
         except NoResultFound:
             self.user.watchlist.add(movie)
Ejemplo n.º 7
0
 def togglewatchlist(self):
     movie_id = int(self.request.form['movie_id'])
     movie = Movie.load(self.session, id=movie_id)
     if movie in self.user.watchlist:
         self.user.watchlist.remove(movie)
     else:
         # checked if already seen
         try:
             Rating.load(self.session, movie=movie, user=self.user)
         except NoResultFound:
             self.user.watchlist.add(movie)
Ejemplo n.º 8
0
    def user_rate(self):
        if self.user is None:
            return self.not_authorized('error/401.phtml')

        try:
            movie_id = int(self.request.form['movie_id'])
            rating = int(self.request.form['rating'])
        except (KeyError, ValueError):
            return self.bad_request('error/400.phtml')

        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        if rating == 0:
            self.user.drop_rating(movie)
        else:
            self.user.set_rating(movie, rating)
        self.template = None
Ejemplo n.º 9
0
    def user_rate(self):
        if self.user is None:
            return self.not_authorized('error/401.phtml')

        try:
            movie_id = int(self.request.form['movie_id'])
            rating = int(self.request.form['rating'])
        except (KeyError, ValueError):
            return self.bad_request('error/400.phtml')

        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        if rating == 0:
            self.user.drop_rating(movie)
        else:
            self.user.set_rating(movie, rating)
        self.template = None
Ejemplo n.º 10
0
    def update_movies(self):
        with open(project_path + '/data/movies', 'r') as movies:
            while True:
                batch = (line.decode('utf-8').strip().split('(')
                         for _, line in zip(range(100), movies)
                         if line.strip() != '')
                batch = [('('.join(parts[:-1]).strip(), int(parts[-1][:-1]))
                         for parts in batch]

                if batch == []: break

                batch = set(batch)
                existing = self.session.query(Movie.title, Movie.year)\
                               .filter(tuple_(Movie.title, Movie.year).in_(batch)).all()
                new_ = batch.difference(existing)
                new_ = [
                    Movie(title=title, year=year, meta={})
                    for title, year in new_
                ]
                self.session.add_all(new_)
                self.session.commit()

        self.redirect('/')
Ejemplo n.º 11
0
    def update_movie(self, movie_id):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        title, year, poster, director, screenwriter, actors, imdbid = [
            self.request.form[key] for key in
            'title, year, poster, director, screenwriter, actors, imdbid'.
            split(', ')
        ]

        year = int(year)

        movie.title = title
        movie.year = year
        movie.img = poster

        if imdbid == movie.imdbid:
            meta = dict(movie.get_meta())
            meta['Director'] = reformat_cast(director)
            meta['Writer'] = reformat_cast(screenwriter)
            meta['Actors'] = reformat_cast(actors)
            movie.meta = meta

        else:
            imdbid = imdbid.strip()
            if 'imdb.com' in imdbid:
                imdbid = imdbid.split("title/")[1].split("/")[0]

            movie.imdbid = imdbid
            movie.meta = None
            movie.get_meta()

        self.session.flush()

        return self.redirect('/mod/movie/%d' % movie_id)
Ejemplo n.º 12
0
class Controller(BaseController):

    def partial(self, movie_id):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return

        meta = movie.get_meta()
        self.view.update({'movie': movie,
                          'meta': meta})
        self.template = 'partials/movie.phtml'

    def show(self, movie_id, dummy):
        try:
            movie = Movie.load(self.session, id=movie_id)
        except NoResultFound:
            return self.not_found('error/404.phtml')

        # last ratings
        last_ratings = self.session.query(Rating.rating, User)\
                           .join((User, and_(User.id == Rating.user_id,
                                             Rating.movie == movie)))\
                           .order_by(Rating.rated.desc()).all()

        if len(last_ratings) == 0:
            avg_rating = None
        else:
            avg_rating = sum(r.rating for r in last_ratings) * .5 / len(last_ratings)

        # user rating
        if self.user is not None:
            try:
                self.view['rating'] = Rating.load(self.session, movie=movie, user=self.user)
            except NoResultFound:
                pass

        self.view.update({'movie': movie,
                          'meta': movie.get_meta(),
                          'last_ratings': last_ratings,
                          'avg_rating': avg_rating})
        self.template = 'movie.phtml'

    def missing(self):
        self.template = 'missing.phtml'

    def fill_missing(self):
        imdb_link = self.request.form['imdb'].lower()
        if 'imdb.com' not in imdb_link:
            return self.redirect('/movie/missing')

        try:
            imdbid = imdb_link.split("title/")[1].split("/")[0]
            q = requests.get("http://www.omdbapi.com/?i=%s&r=JSON" % imdbid)
            content = q.content
            del q
            content_json = json_loads(content)
            title = content_json['Title']
            year = int(content_json['Year'].strip())

        except Exception, _:
            return self.redirect('/movie/missing')

        try:
            movie = Movie.load(self.session, title=title, year=year)
        except NoResultFound:
            movie = Movie(title=title, year=year, meta=content_json, imdbid=imdbid)
            self.session.add(movie)
            self.session.flush()
        else:
            movie.meta=content_json
            movie.imdbid=imdbid


        return self.redirect('/movie/%d-%s' % (movie.id, url_quote(movie.title)))