Exemplo n.º 1
0
    def edit_series(self):
        """
        Save the edit to the database.
        """
        if not self.le_title.text() or not self.le_year:
            show_msg(texts.insert_error, texts.no_title, QMessageBox.Warning,
                     QMessageBox.Close)
        else:
            self.series.name = self.le_title.text()
            self.series.original_name = self.le_original_title.text()
            self.series.year = self.le_year.text()
            self.series.seasons = self.le_seasons.text()

            if self.le_poster.text():
                self.series.poster = self.le_poster.text()
            else:
                self.series.poster = '../images/poster_placeholder.png'

            self.series.web_url = self.le_web_url.text()
            self.series.summary = self.le_summary.toPlainText()

            id, name = get_combobox_info(self.cb_media)
            if id:
                self.series.media_id = id

            self.series.keyword_id = db_get_id(self.session, self.cb_keyword,
                                               Keyword())

            self.series.category_1_id = db_get_id(self.session,
                                                  self.cb_category_1,
                                                  Category())

            self.series.category_2_id = db_get_id(self.session,
                                                  self.cb_category_2,
                                                  Category())

            try:
                self.session.commit()
                text = texts.msg_insert_ok(self.series.name)
                show_msg(texts.insert_ok, text, QMessageBox.Information,
                         QMessageBox.Close)
                self.clear()
            except (DBAPIError, SQLAlchemyError) as error:
                self.session.rollback()
                self.session.commit()
                text = texts.msg_edit_erro(self.series.name)
                show_msg(texts.insert_error, text, QMessageBox.Critical,
                         QMessageBox.Close, str(error))
            else:
                try:
                    self.series.view = write_series_html(
                        self.session, self.series)
                    self.session.add(self.series)
                    self.session.commit()
                except SQLAlchemyError as error:
                    self.session.rollback()
                    self.session.commit()
                    show_msg(texts.insert_error, texts.html_write,
                             QMessageBox.Critical, QMessageBox.Close,
                             str(error))
Exemplo n.º 2
0
    def save_series_creator(self):
        """
        Save the edit to the database.
        """
        for i in range(self.chbox_count):
            if self.chbox_del[i].isChecked():
                id = self.chbox_del[i].text()

                try:
                    result = self.session.query(SeriesCreator).\
                        filter(SeriesCreator.id == id).delete()
                except ObjectDeletedError:
                    continue

                if result == 1:
                    self.session.commit()

                continue

            self.series_creator[i].creator_id = db_get_id(
                self.session, self.cb_creator[i], Creator())
            self.series_creator[i].order = self.le[i].text()

            db_insert_obj(self.session, self.series_creator[i])

        for i in range(self.chbox_count, self.rows):
            id, name = get_combobox_info(self.cb_creator[i])
            order = self.le[i].text()

            if id != 0:
                series_creator = SeriesCreator(
                    series_id=self.id, creator_id=id, order=order)
                self.session.add(series_creator)
            else:
                creator = db_insert_obj(self.session, Creator(name=name))
                series_creator = SeriesCreator(
                    series_id=self.id, creator_id=creator.id, order=order)
                self.session.add(series_creator)

        series = self.session.query(Series).get(self.id)
        self.session.commit()

        series.view = write_series_html(self.session, series)
        self.session.commit()

        self.clear()
Exemplo n.º 3
0
    def save_movie_director(self):
        """
        Save the edit to the database.
        """
        for i in range(self.chbox_count):
            if self.chbox_del[i].isChecked():
                id = self.chbox_del[i].text()

                try:
                    result = self.session.query(MovieDirector).\
                        filter(MovieDirector.id == id).delete()
                except ObjectDeletedError:
                    continue

                if result == 1:
                    self.session.commit()

                continue

            self.movie_director[i].director_id = db_get_id(
                self.session, self.cb_director[i], Director())
            self.movie_director[i].order = self.le[i].text()

            db_insert_obj(self.session, self.movie_director[i])

        for i in range(self.chbox_count, self.rows):
            id, name = get_combobox_info(self.cb_director[i])
            order = self.le[i].text()

            if id != 0:
                movie_director = MovieDirector(
                    movie_id=self.id, director_id=id, order=order)
                self.session.add(movie_director)
            else:
                director = db_insert_obj(self.session, Director(name=name))
                movie_director = MovieDirector(
                    movie_id=self.id, director_id=director.id, order=order)
                self.session.add(movie_director)

        movie = self.session.query(Movie).get(self.id)
        self.session.commit()

        movie.view = write_movie_html(self.session, movie)
        self.session.commit()

        self.clear()
Exemplo n.º 4
0
    def insert_movie(self):
        """
        Insert movie in database.

        :return: The errors in dictionary containing the errors.
        """
        self.movie = Movie()

        if not self.le_title.text() or not self.le_year:
            show_msg(texts.insert_error, texts.no_title, QMessageBox.Warning,
                     QMessageBox.Close)
        else:
            self.movie.name = self.le_title.text()
            self.movie.original_name = self.le_original_title.text()
            self.movie.year = self.le_year.text()
            self.movie.time = self.le_time.text()

            if self.le_imdb_url.isEnabled():
                self.movie.search_url = self.le_imdb_url.text()
            elif self.le_ad_url.isEnabled():
                self.movie.search_url = self.le_ad_url.text()

            if self.le_poster.text():
                self.movie.poster = self.le_poster.text()
            else:
                self.movie.poster = '../images/poster_placeholder.png'

            self.movie.web_url = self.le_web_url.text()
            self.movie.summary = self.le_summary.toPlainText()

            id, name = get_combobox_info(self.cb_media)
            if id:
                self.movie.media_id = id

            self.movie.box_id = db_get_id(self.session, self.cb_box, Box())

            self.movie.keyword_id = db_get_id(self.session, self.cb_keyword,
                                              Keyword())

            self.movie.category_1_id = db_get_id(self.session,
                                                 self.cb_category_1,
                                                 Category())

            self.movie.category_2_id = db_get_id(self.session,
                                                 self.cb_category_2,
                                                 Category())

            id, name = get_combobox_info(self.cb_director)
            director = db_get_obj(self.session, id, name, Director)
            if director:
                movie_director = MovieDirector(order=1, director=director)
                self.movie.directors.append(movie_director)

            i = 0
            old_order = 0
            for cb in self.cb_actor:
                actor_id = db_get_id(self.session, cb, Actor())

                character_id = db_get_id(self.session, self.cb_character[i],
                                         Character())

                if actor_id and character_id:
                    cast = Cast(actor_id=actor_id, character_id=character_id)
                    try:
                        self.session.add(cast)
                        self.session.commit()
                    # If except most probably is because cast exist so we try to get it
                    except IntegrityError:
                        self.session.rollback()
                        self.session.commit()
                        cast = self.session.query(Cast).filter(
                            Cast.actor_id == actor_id,
                            Cast.character_id == character_id).first()
                    except DBAPIError as error:
                        self.session.rollback()
                        self.session.commit()
                        _, actor = get_combobox_info(cb)
                        _, character = get_combobox_info(self.cb_character[i])
                        text = texts.cast_error + actor + ' ' + character + '.'
                        show_msg(texts.db_error, text, QMessageBox.Critical,
                                 QMessageBox.Close, str(error))
                        continue

                    if cast:
                        order = int(self.le_order[i].text())
                        if order == old_order:
                            order += 1
                            old_order = order
                        else:
                            old_order = order

                        movie_cast = MovieCast(
                            order=order,
                            star=self.chbox_star[i].isChecked(),
                            cast=cast)
                        self.movie.movie_cast.append(movie_cast)

                i += 1

            hour_now = datetime.datetime.utcnow()
            self.movie.date_create = hour_now
            self.movie.date_edit = hour_now

            try:
                self.session.add(self.movie)
                self.session.commit()
                text = texts.msg_insert_ok(self.movie.name)
                show_msg(texts.insert_ok, text, QMessageBox.Information,
                         QMessageBox.Close)
            except IntegrityError as error:
                self.session.rollback()
                self.session.commit()
                show_msg(texts.insert_error, texts.movie_exist,
                         QMessageBox.Critical, QMessageBox.Close, str(error))
            except (DBAPIError, SQLAlchemyError) as error:
                self.session.rollback()
                self.session.commit()
                text = texts.msg_insert_erro(self.movie.name)
                show_msg(texts.insert_error, text, QMessageBox.Critical,
                         QMessageBox.Close, str(error))
            else:
                try:
                    self.movie.view = write_movie_html(self.session,
                                                       self.movie)
                    self.session.add(self.movie)
                    self.session.commit()
                except SQLAlchemyError as error:
                    self.session.rollback()
                    self.session.commit()
                    show_msg(texts.insert_error, texts.html_write,
                             QMessageBox.Critical, QMessageBox.Close,
                             str(error))
Exemplo n.º 5
0
    def save_cast(self):
        """
        Save values from cast table in database.
        """
        for i in range(self.ch_del_count):
            if self.chbox_del[i].isChecked():
                result = self.session.query(SeasonCast).\
                    filter(SeasonCast.id == self.season_cast[i].id).delete()

                if result == 1:
                    self.session.commit()
                else:
                    self.session.rollback()

                continue

            self.season_cast[i].cast.actor_id = db_get_id(
                self.session, self.cb_actor[i], Actor())

            self.season_cast[i].cast.character_id = db_get_id(
                self.session, self.cb_character[i], Character())

            self.season_cast[i].order = self.le_order[i].text()

            self.season_cast[i].star = self.chbox_star[i].isChecked()

            db_insert_obj(self.session, self.season_cast[i])

        for i in range(self.ch_del_count, self.rows):
            actor_id = db_get_id(self.session, self.cb_actor[i], Actor())

            character_id = db_get_id(
                self.session, self.cb_character[i], Character())

            if actor_id and character_id:
                cast = Cast(actor_id=actor_id, character_id=character_id)
                try:
                    self.session.add(cast)
                    self.session.commit()
                # If except most probably is because cast exist so we try to
                # get it
                except sqlalchemy.exc.IntegrityError:
                    self.session.rollback()
                    self.session.commit()
                    cast = self.session.query(Cast).filter(
                        Cast.actor_id == actor_id,
                        Cast.character_id == character_id).first()

                if cast:
                    series_cast = SeasonCast(
                        season_id=self.id,
                        cast_id=cast.id,
                        order=self.le_order[i].text(),
                        star=self.chbox_star[i].isChecked()
                    )

                    db_insert_obj(self.session, series_cast)

        series = self.cb_series.currentText()
        name = series + ' ' + texts.cast_s
        text = texts.msg_edit_ok(name)
        show_msg(
            texts.edit_ok, text, QMessageBox.Information, QMessageBox.Close)
        self.clear()

        sc = None
        sc = self.session.query(Season).get(self.id)

        self.session.add(sc)
        self.session.commit()