diff --git a/main.py b/main.py index be0b0af623356cee5e587ceb4b77e70a6498a797..bc6917858b78072d1c1114b351c869675bdb12d8 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ from sys import stderr -from sqlalchemy.exc import SQLAlchemyError +from sqlalchemy.exc import SQLAlchemyError, NoResultFound, MultipleResultsFound from movies import MovieDatabase, Movie, Genre from kivy.app import App @@ -9,6 +9,7 @@ from kivy.properties import StringProperty class MoviesApp(App): message = StringProperty('') + name = StringProperty('') def __init__(self, **kwargs): super().__init__(**kwargs) @@ -17,13 +18,77 @@ class MoviesApp(App): self.session = self.movie_database.create_session() def create_movie(self, title, action_selected, drama_selected, fantasy_selected): - pass + query = self.session.query(Genre).filter(Genre.name == 'Drama').one() + print(query.genre_id) + query = self.session.query(Genre).filter(Genre.name == 'Action').one() + print(query.genre_id) + query = self.session.query(Genre).filter(Genre.name == 'Fantasy').one() + print(query.genre_id) + + try: + title_input = self.root.ids.title + title = title_input.text + genres = [] + if action_selected: + genres.append(self.session.query(Genre).filter(Genre.name == 'Action').one()) + if drama_selected: + genres.append(self.session.query(Genre).filter(Genre.name == 'Drama').one()) + if fantasy_selected: + genres.append(self.session.query(Genre).filter(Genre.name == 'Fantasy').one()) + new_movie = Movie( + title=self.name, + genres=genres, + ) + self.session.add(new_movie) + self.session.commit() + self.message = f'Successfully created movie: {title}' + except NoResultFound: + self.message = 'Error Genre not found' + except MultipleResultsFound: + self.message = f'Error: Multiple movies with the same title "{title}" found.' + except SQLAlchemyError as e: + self.message = f'Error: {str(e)}' def update_movie(self, title, action_selected, drama_selected, fantasy_selected): - pass + + try: + movie = self.session.query(Movie).filter(Movie.title == title).one() + genres = [] + if action_selected: + genres.append(self.session.query(Genre).filter(Genre.name == 'Action').one()) + if drama_selected: + genres.append(self.session.query(Genre).filter(Genre.name == 'Drama').one()) + if fantasy_selected: + genres.append(self.session.query(Genre).filter(Genre.name == 'Fantasy').one()) + Movie.genres = genres + + self.session.add(movie) + self.session.commit() + self.message = f'Successfully updated movie: {title}' + + except NoResultFound as e: + self.message = f'Error movie with tile {title} not found' + except MultipleResultsFound: + self.message = f'Error: Multiple movies with the same title "{title}" found.' + except SQLAlchemyError as e: + self.message = f'Error: {str(e)}' def delete_movie(self, title): - pass + try: + movies_to_delete = self.session.query(Movie).filter(Movie.title == title) + + if movies_to_delete.count() == 0: + raise ValueError(f'Movie with title {title} was not found') + + movies_to_delete.delete() + + self.session.commit() + + self.message = f'Successfully deleted movie(s) with title: {title}' + except NoResultFound as e: + self.message = f'Error: {str(e)}' + except SQLAlchemyError as e: + self.message = f'Error: {str(e)}' def main():