Exemple #1
0
def update_movie(self):
    session = self.db.Session()

    if self._am_movie_id is not None:
        movie = session.query(db.Movie).filter_by(movie_id=self._am_movie_id).one()
    else:
        movie = session.query(db.Movie).filter_by(movie_id=self._movie_id).one()
    if movie is None: # movie was deleted in the meantime
        return add_movie_db(self, True)

    details = get_details(self)

    old_poster_md5 = movie.poster_md5
    new_poster_md5 = None
    if details['image'] and old_poster_md5 != details['image']: # details["image"] can contain MD5 or file path
        new_image_path = os.path.join(self.locations['temp'], "poster_%s.jpg" % details['image'])
        if not os.path.isfile(new_image_path):
            log.warn("cannot read temporary file: %s", new_image_path)
        else:
            new_poster_md5 = gutils.md5sum(file(new_image_path, 'rb'))
            if session.query(db.Poster).filter_by(md5sum=new_poster_md5).count() == 0:
                try:
                    data = file(new_image_path, 'rb').read()
                except Exception, e:
                    log.warning("cannot read poster data")
                else:
                    poster = db.Poster(md5sum=new_poster_md5, data=data)
                    del details["image"]
                    details['poster_md5'] = new_poster_md5
                    session.add(poster)

                    # delete old image
                    import delete
                    old_poster = session.query(db.Poster).filter_by(md5sum=old_poster_md5).first()
                    if old_poster and len(old_poster.movies) == 1: # other movies are not using the same poster
                        session.delete(old_poster)
                        delete.delete_poster_from_cache(old_poster_md5, self.locations['posters'])
            else:
                details['poster_md5'] = new_poster_md5
Exemple #2
0
    else:
        details['poster_md5'] = None

    update_movie_instance(movie, details, session)
    session.add(movie)

    # delete old image
    if old_poster_md5 and old_poster_md5 != new_poster_md5:
        import delete
        old_poster = session.query(
            db.Poster).filter_by(md5sum=old_poster_md5).first()
        if old_poster and len(
                old_poster.movies
        ) == 1:  # other movies are not using the same poster
            session.delete(old_poster)
            delete.delete_poster_from_cache(old_poster_md5,
                                            self.locations['posters'])

    if commit(session):
        main_treeview.setmovie(self, movie, self.selected_iter_edit[0],
                               self.treemodel)

        # close add window
        self.widgets['add']['window'].hide()
        # refresh
        self.treeview_clicked()
        self.update_statusbar(_('Movie information has been updated'))


def change_rating_from_slider(self):
    rating = int(self.widgets['add']['rating_slider'].get_value())
    self.widgets['add']['image_rating'].show()
Exemple #3
0
                        session.add(poster)
                else:
                    details['poster_md5'] = new_poster_md5
    else:
        details['poster_md5'] = None

    update_movie_instance(movie, details, session)
    session.add(movie)
    
    # delete old image
    if old_poster_md5 and old_poster_md5 != new_poster_md5:
        import delete
        old_poster = session.query(db.Poster).filter_by(md5sum=old_poster_md5).first()
        if old_poster and len(old_poster.movies) == 1: # other movies are not using the same poster
            session.delete(old_poster)
            delete.delete_poster_from_cache(old_poster_md5, self.locations['posters'])

    if commit(session):
        main_treeview.setmovie(self, movie, self.selected_iter_edit[0], self.treemodel)

        # close add window
        self.widgets['add']['window'].hide()
        # refresh
        self.treeview_clicked()
        self.update_statusbar(_('Movie information has been updated'))


def change_rating_from_slider(self):
    rating = int(self.widgets['add']['rating_slider'].get_value())
    self.widgets['add']['image_rating'].show()
    try: