def save_season_episodes(self): """ Saved season and episodes in database. :return: Errors when inserting into the database or ok if not errors. """ self.season.season_num = self.le_season_num.text() self.season.year = self.le_year.text() id_m, name_m = get_combobox_info(self.cb_media) self.season.media_id = id_m _, name_s = get_combobox_info(self.cb_series) try: self.session.add(self.season) self.session.commit() text = texts.msg_edit_season_ok(name_s, self.le_season_num.text()) show_msg( texts.edit_ok, text, QMessageBox.Information, QMessageBox.Ok) except (IntegrityError, DBAPIError) as error: self.session.rollback() self.session.commit() text = texts.msg_insert_season_error( name_s, self.le_season_num.text()) show_msg(texts.insert_error, text, QMessageBox.Critical, QMessageBox.Close, str(error)) episodes = [] i = 0 for name, summary, code in self.result_episode: self.episodes_all[i].name = name self.episodes_all[i].summary = summary self.episodes_all[i].code = code episodes.append(self.episodes_all[i]) i += 1 try: self.session.add_all(episodes) self.session.commit() text = texts.msg_edit_epidsode_ok(name_s, self.le_season_num.text()) show_msg( texts.edit_ok, text, QMessageBox.Information, QMessageBox.Ok) self.clear() except (IntegrityError, DBAPIError) as error: self.session.rollback() self.session.commit() text = texts.msg_edit_episode_error( name_s, self.le_season_num.text()) show_msg(texts.insert_error, text, QMessageBox.Critical, QMessageBox.Close, str(error))
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))
def query_title(self): """ Search movie by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_title) movie = self.session.query(Movie).get(id) self.set_query_title(movie)
def query_title(self): """ Search series by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_title) series = self.session.query(Series).get(id) self.set_query_title(series)
def selected_season(self): id_n, name_n = get_combobox_info(self.cb_season_num) id_y, name_y = get_combobox_info(self.cb_year) if id_n != 0: self.season = self.session.query(Season).get(id_n) elif id_y != 0: self.season = self.session.query(Season).get(id_y) else: return self.le_season_num.setText(str(self.season.season_num)) self.le_year.setText(self.season.year) id_m = self.season.media_id self.set_combobox_value(self.cb_media, Media, id_m) self.episodes_all = self.session.query(Episode).\ filter(Episode.season_id == self.season.id).all() self.populated_table_cast() self.populated_table_episode()
def query_title(self): """ Search movie by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_title) if self.type == 'movie': query = self.session.query(Movie).get(id) else: query = self.session.query(Series).get(id) self.set_table_title(query)
def selected_movie(self): """ When movie is selected search director values in database. """ self.cb_select.currentIndexChanged.disconnect() self.id, name = get_combobox_info(self.cb_select) self.movie_director = self.session.query(MovieDirector). \ filter(MovieDirector.movie_id == self.id).all() for md in self.movie_director: self.set_table_values(md)
def selected_series(self): """ When series is selected search creator values in database. """ self.cb_select.currentIndexChanged.disconnect() self.id, name = get_combobox_info(self.cb_select) self.series_creator = self.session.query(SeriesCreator). \ filter(SeriesCreator.series_id == self.id).all() for mc in self.series_creator: self.set_table_values(mc)
def query_box(self): """ Search movie by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_box) if id != 0: movies = self.session.query(Movie).filter(Movie.box_id == id).all() else: movies = self.session.query(Movie).filter( Movie.box_id.is_(None)).all() self.set_table(movies)
def query_year(self): """ Search movie by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_year) if self.type == 'movie': query = self.session.query(Movie). \ filter(Movie.year == name).order_by(Movie.year).all() else: query = self.session.query(Series). \ filter(Series.year == name).order_by(Series.year).all() self.set_table(query)
def selected_season(self): self.cb_seasons.currentIndexChanged.disconnect() self.id, name = get_combobox_info(self.cb_seasons) self.season_cast = self.session.query(SeasonCast). \ filter(SeasonCast.season_id == self.id).\ order_by(SeasonCast.order, desc(SeasonCast.star)).all() for sc in self.season_cast: actor = sc.cast.actors character = sc.cast.characters star = sc.star order = sc.order self.set_table_values(sc.id, actor, character, order, star)
def selected_series(self): """ Search MovieCast or SeriesCast values according object selected. """ self.cb_series.currentIndexChanged.disconnect() id, name = get_combobox_info(self.cb_series) seasons = self.session.query(Season).\ filter(Season.series_id == id).all() self.cb_seasons.clear() self.cb_seasons.addItem('', 0) for season in seasons: self.cb_seasons.addItem(str(season.season_num), season.id) self.cb_seasons.currentIndexChanged.connect(self.selected_season)
def selected_series(self): """ Get values in SeriesCast to fill table cast. """ id, name = get_combobox_info(self.cb_series) season = self.session.query(Season).\ filter(Season.series_id == id).all() self.cb_season_num.addItem('', 0) self.cb_year.addItem('', 0) for s in season: self.cb_season_num.addItem(str(s.season_num), s.id) self.cb_year.addItem(s.year, s.id) self.cb_season_num.currentIndexChanged.connect(self.selected_season) self.cb_year.currentIndexChanged.connect(self.selected_season)
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()
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()
def query_media(self): """ Search movie by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_media) if self.type == 'movie' and id != 0: query = self.session.query(Movie). \ filter(Movie.media_id == id).order_by(Movie.name).all() elif self.type == 'movie' and id == 0: query = self.session.query(Movie). \ filter(Movie.media_id.is_(None)).order_by(Movie.name).all() elif self.type == 'series' and id != 0: query = self.session.query(Series). \ filter(Series.media_id == id).order_by(Series.media_id).all() else: query = self.session.query(Series). \ filter(Series.media_id.is_(None)).order_by(Series.media_id).all() self.set_table(query)
def delete_series(self): """ Delete the series in the database. """ result = 0 id, name = get_combobox_info(self.cb_select) text = texts.msg_before_delete(name) answer = QMessageBox.information(self, texts.warning, text, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if answer == QMessageBox.Yes: self.series = self.session.query(Series).get(id) result = self.session.query(Series).filter( Series.id == id).delete() if result == 1: self.session.commit() text = texts.msg_delete_ok(name) show_msg(texts.delete_ok, text, QMessageBox.Information, QMessageBox.Close) self.clear()
def obj_selected(self): """ When object is selected in combobox get it in database and start new windows to edit it. """ id, name = get_combobox_info(self.cb_select) self.obj = self.session.query(self.cls).get(id) if self.obj and id != 0: self.lb_select.setEnabled(False) self.lb_select.setHidden(True) self.cb_select.setEnabled(False) self.cb_select.setHidden(True) self.pb_select.setEnabled(False) self.pb_select.setHidden(True) self.pb_help_1.setEnabled(False) self.pb_help_1.setHidden(True) self.hbox_select.setEnabled(False) self.vbox_main.setContentsMargins(20, 0, 20, 20) self.setGeometry(0, 0, 511, 205) self.lb.setEnabled(True) self.lb.setHidden(False) self.le.setEnabled(True) self.le.setHidden(False) self.pb_save.setEnabled(True) self.pb_save.setHidden(False) self.pb_help_2.setEnabled(True) self.pb_help_2.setHidden(False) self.pb_leave.setEnabled(True) self.pb_leave.setHidden(False) self.le.setText(self.obj.name) self.le.returnPressed.connect(self.edit_object) self.cb_select.currentIndexChanged.disconnect()
def query_category(self): """ Search movie by selected title in QCombobox. """ id, name = get_combobox_info(self.cb_category) if self.type == 'movie' and id != 0: query = self.session.query(Movie).\ filter(or_(Movie.category_1_id == id, Movie.category_2_id == id)).\ order_by(Movie.name).all() elif self.type == 'movie' and id == 0: query = self.session.query(Movie).\ filter(Movie.category_1_id.is_(None), Movie.category_2_id.is_(None)).\ order_by(Movie.name).all() elif self.type == 'series' and id != 0: query = series = self.session.query(Series).\ filter(or_(Series.category_1_id == id, Series.category_2_id == id)).\ order_by(Series.name).all() else: query = self.session.query(Series). \ filter(Series.category_1_id.is_(None), Series.category_2_id.is_(None)). \ order_by(Movie.name).all() self.set_table(query)
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))
def fill_series(self): """ After selecting the series, fill in all the fields with values referring to the same. """ self.cb_select.currentIndexChanged.disconnect() id, name = get_combobox_info(self.cb_select) self.series = self.session.query(Series).get(id) self.le_title.setText(self.series.name) self.le_original_title.setText(self.series.original_name) self.le_year.setText(self.series.year) self.le_seasons.setText(self.series.seasons) self.le_poster.setText(self.series.poster) self.le_web_url.setText(self.series.web_url) self.le_search_url.setText(self.series.search_url) if self.series.search_url: self.lb_url.setText('<a href=\"' + self.series.search_url + '">Abrir URL de pesquisa</a>') self.le_summary.setText(self.series.summary) if self.series.media_id: self.set_combobox_value(self.cb_media, Media, self.series.media_id) else: self.cb_media.setItemText(0, '') if self.series.keyword_id: self.set_combobox_value(self.cb_keyword, Keyword, self.series.keyword_id) else: self.cb_keyword.setItemText(0, '') if self.series.category_1_id: self.set_combobox_value(self.cb_category_1, Category, self.series.category_1_id) else: self.self.cb_category_1.setItemText(0, '') if self.series.category_2_id: self.set_combobox_value(self.cb_category_2, Category, self.series.category_2_id) else: self.self.cb_category_2.setItemText(0, '') if self.series.creators: total = len(self.series.creators) - 1 i = 0 creators = '' for mc in self.series.creators: if i == total: creators += mc.creator.name else: creators += mc.creator.name + ', ' i += 1 self.le_creator.setText(creators) if self.series.series_cast: total = len(self.series.series_cast) for i in range(total): actor = self.series.series_cast[i].cast.actors.name character = self.series.series_cast[i].cast.characters.name self.table_add_rows(actor, character, self.series.series_cast[i].star)