from __future__ import print_function from sys import stderr from sqlalchemy.exc import SQLAlchemyError from movies import MovieDatabase, Movie from kivy.app import App __app_package__ = 'edu.unl.cse.soft161.movies' __app__ = 'Movies' __version__ = '1.0' __flags__ = ['--bootstrap=sdl2', '--requirements=python2,kivy,sqlalchemy,mysql_connector', '--permission=INTERNET'] class MoviesApp(App): def __init__(self, **kwargs): super(MoviesApp, self).__init__(**kwargs) url = MovieDatabase.construct_mysql_url('localhost', 3306, 'movies', 'root', 'cse') self.movie_database = MovieDatabase(url) self.session = self.movie_database.create_session() @staticmethod def _create_movie(session, title, budget, gross_revenue): movie = Movie(title=title, budget=budget, gross_revenue=gross_revenue) session.add(movie) session.commit() def create_movie(self, title, budget, gross_revenue): try: budget = int(budget) * 1000000 gross_revenue = int(gross_revenue) * 1000000 except ValueError as exception: self.root.ids.message.text = 'Formatting error: {exception}'.format(exception=exception) return try: self._create_movie(self.session, title, budget, gross_revenue) self.root.ids.message.text = 'Movie added!' except SQLAlchemyError as exception: self.session.rollback() self.root.ids.message.text = 'Database error: {exception}'.format(exception=exception) if __name__ == "__main__": try: app = MoviesApp() app.run() except SQLAlchemyError as exception: print('Initial database connection failed!', file=stderr) print('Cause: {exception}'.format(exception=exception), file=stderr) exit(1)