def get(self, name): movie = MovieModel.get_movie(name=name) if movie: return movie.get_json(), 200 return {"error": f"No Movie with the name {name}"}, 404
def put(self, name): data = Movie.parser.parse_args() movie = MovieModel.find_by_name(name) if movie is None: movie = MovieModel(name, **data) else: movie.year = data['year'] movie.length = data['length'] movie.director = data['director'] movie.save_to_db() return movie.json()
def post(cls): data = request.get_json() actor = ActorModel.find_by_primaryName(data.get('name')) print(f' {actor.primaryName} play in:') counter = 1 for movie_id in actor.knownForTitles: movie = MovieModel.find_by_tconst(movie_id) print(f'\t{counter} - {movie.originalTitle}') counter += 1
def get(cls, year: int): movies_list = MovieModel.find_by_year(str(year)) for movie in movies_list: print(f'{movie.primaryTitle} - {movie.genres} ') actors = ActorModel.find_by_movie(movie.tconst) counter = 0 for actor in actors: counter += 1 print(f' \t {counter} - {actor.primaryName}')
def delete(cls, imdbID: str): movie = MovieModel.find_by_imdbID(imdbID) if movie: movie.delete_from_db() return {"message": "Movie deleted successfully"}, 200 return { "message": f"Error!!, movie with {imdbID} imdbID was not found" }, 404
def get(cls): with open('title_data.tsv') as file: dict_records = csv.DictReader(file, delimiter='\t') for record in dict_records: movie = MovieModel( tconst=record['tconst'], titleType=record['titleType'], primaryTitle=record['primaryTitle'], originalTitle=record['originalTitle'], isAdult=False if record['isAdult'] == '0' else True, startYear=datetime.strptime(record['startYear'], '%Y') if not record['startYear'] == '\\N' else None, endYear=datetime.strptime(record['endYear'], '%Y') if not record['endYear'] == '\\N' else None, runtimeMinutes=0 if record['runtimeMinutes'] == '\\N' else record['runtimeMinutes'], genres=record['genres'].split(',')) movie.save_to_db()
def post(self, theatre_name): data = TheatreSchedule.parser.parse_args() data = {k: v for k, v in data.items() if v is not None} logger.info("Validating request data") if not all(key in data for key in ['time', 'movie', 'screen']): return { "error": "['time', 'theatre', 'screen'] parameters required for creating a schedule" }, 400 elif data["screen"] <= 0: return {"error": "Invalid screen number"}, 400 theatre = TheatreModel.get_theatre(name=theatre_name) movie = MovieModel.get_movie(name=data["movie"]) if not theatre: return { "error": f"No theatre found with the name {theatre_name}" }, 404 elif not movie: return { "error": f"No movie found with the name {data['movie']}" }, 404 elif theatre.screens < data["screen"]: return {"error": f"No such screen in theatre:{theatre}"}, 400 try: result = ScheduleModel.get_schedule(theatre_id=theatre.id, movie_id=movie.id, screen=data["screen"], time=data["time"]) if result: logger.info("schedule not found") return {"error": f"No schedule with the passed data"}, 400 schedule = ScheduleModel( theatre_id=theatre.id, movie_id=movie.id, time=data["time"], screen=data["screen"], ) except InvalidTimeException as e: return {"error": "Invalid time format"}, 400 schedule.save_to_db() return { "movie": data["movie"], "theatre": theatre_name, "time": schedule.time.strftime("%H:%M"), }, 201
def post(cls): data = request.get_json() year = data.get('year') genre = data.get('genre') movies_list = MovieModel.find_by_year_and_genere(year, genre) for movie in movies_list: print(f'{movie.primaryTitle} - {movie.genres} ') actors = ActorModel.find_by_movie(movie.tconst) counter = 0 for actor in actors: counter += 1 print(f' \t {counter} - {actor.primaryName}')
def get(self, theatre_name): data = TheatreSchedule.parser.parse_args() data = {k: v for k, v in data.items() if v is not None} logger.info("Validating request data") if "screen" in data or "time" in data: return { "error": "Display of only theatre schedule is allowed" }, 400 elif len(data) > 1 or (len(data) == 1 and "movie" not in data): return { "error": "movie is only accepted as a valid parameter" }, 400 theatre = TheatreModel.get_theatre(theatre_name) if not theatre: return { "error": f"No theatre found with the name {theatre_name}" }, 404 elif data.get("movie"): movie = MovieModel.get_movie(name=data["movie"]) if not movie: return { "error": f"No movie found with the name{data['movie']}" }, 404 theatre_schedules = ScheduleModel.get_schedule( movie_id=movie.id, theatre_id=theatre.id) else: theatre_schedules = ScheduleModel.get_schedule( theatre_id=theatre.id) result = {} for schedule in theatre_schedules: movie = MovieModel.get_movie_by_id(movie_id=schedule.movie_id) if result.get(movie.name): result[movie.name].append(schedule.time.strftime("%H:%M")) else: result[movie.name] = [schedule.time.strftime("%H:%M")] return result, 200
def delete(self, name): movie = MovieModel.get_movie(name) logger.info("Validating request data") if not movie: return {"error": f"No Movie with the name {name}"}, 404 schedules = ScheduleModel.get_schedule(movie_id=movie.id) if len(schedules) > 0: logger.info("Schedule not found") return { "error": f"Delete schedule of the movie before deleting it" }, 400 movie.delete_from_db() return None, 204
def put(self, theatre_name): data = TheatreSchedule.parser.parse_args() logger.info("Validating request data") if any(True for key, val in data.items() if val is None): return { "error": f"{list(data.keys())} are required for updating schedule time" }, 400 theatre = TheatreModel.get_theatre(theatre_name) movie = MovieModel.get_movie(data["movie"]) if not theatre: return { "error": f"No theatre found with the name {theatre_name}" }, 404 elif not movie: return {"error": f"No movie with the name {data['movie']}"}, 404 elif data["screen"] <= 0: return {"error": "Invalid screen number"}, 400 elif theatre.screens < data["screen"]: return {"error": f"No such screen in theatre:{theatre}"}, 400 try: result = ScheduleModel.get_schedule(theatre_id=theatre.id, movie_id=movie.id, screen=data["screen"], time=data["time"]) if not result: logger.info("schedule not found") return {"error": f"No schedule with the passed data"}, 404 schedule = result[0] except InvalidTimeException: return {"error": "Invalid time format in updated_time"}, 400 try: schedule.time = datetime.strptime(data['updated_time'], "%H:%M").time() except ValueError: return {"error": "Invalid time format"}, 400 schedule.save_to_db() return None, 204
def post(cls): movie_json = request.get_json() movie = movie_schema.load(movie_json) if MovieModel.find_by_imdbID(movie.imdbID): return { "message": f"Movie with this {movie.imdbID} is already exists" }, 400 try: movie.isFav = True movie.save_to_db() except: return { "message": "Error while saving your favorite movie in to DB" }, 500 return movie_schema.dump(movie), 201
def put(self, name): data = Movie.parser.parse_args() movie = MovieModel.get_movie(name) logger.info("Validating request data") if not movie: return {"error": f"No movie with the name {name}"}, 404 data = {k: v for k, v in data.items() if v is not None} if len(data) == 0: return {"error": "No data passed to update"}, 400 for k, v in data.items(): setattr(movie, k, v) movie.save_to_db() return None, 204
def delete(self, theatre_name): data = TheatreSchedule.parser.parse_args() data = {k: v for k, v in data.items() if v is not None} logger.info("Validating request data") if "time" in data and "movie" not in data and "screen" not in data: return {"error": "movie or screen not specified"}, 400 theatre = TheatreModel.get_theatre(theatre_name) if not theatre: return {"error": f"No movie with the name {theatre_name}"}, 404 elif data.get("movie"): movie = MovieModel.get_movie(data["movie"]) if not movie: return { "error": f"No movie with the name {data['movie']}" }, 404 del data["movie"] data["movie_id"] = movie.id elif data.get("updated_time"): return {"error": "Invalid parameter updated_time is passed"}, 400 if data.get("screen") is not None: if data["screen"] <= 0: return {"error": "Invalid screen number"}, 400 elif theatre.screens < data["screen"]: return {"error": f"No such screen in theatre:{theatre}"}, 404 try: schedules = ScheduleModel.get_schedule(theatre_id=theatre.id, **data) except InvalidTimeException: return {"error": "Invalid time is passed"}, 400 if not schedules: logger.info("schedule not found") return {"error": f"Schedule not found"}, 404 for schedule in schedules: schedule.delete_from_db() return None, 204
def post(self, name): data = Movie.parser.parse_args() logger.info("Validating request data") if not data.get("genre"): return {"error": "Genre parameter not passed"}, 400 if MovieModel.get_movie(name): return {"error": f"Movie already exists with the name {name}"}, 400 data = {k: v for k, v in data.items() if v is not None} movie = MovieModel(name, **data) movie.save_to_db() return movie.get_json(), 201
def post(self, name): if MovieModel.find_by_name(name): return { 'message': "A movie with name '{}' already exists.".format(name) }, 400 data = Movie.parser.parse_args() movie = MovieModel(name, **data) try: movie.save_to_db() except: return {"message": "An error occurred inserting the movie."}, 500 return movie.json(), 201
def get(cls): return {"movies": movie_list_schema.dump(MovieModel.find_all())}, 200
def get(self, name): movie = MovieModel.get_movie(name) if movie: return {"name": movie.name, "genre": movie.genre} return {"message": "filmu nie znaleziono"}, 418
def initialize_db(): user1 = UserModel(name="admin", type="admin") user2 = UserModel(name="owner", type="owner") user3 = UserModel(name="user", type="user") db.session.add(user1) db.session.add(user2) db.session.add(user3) db.session.commit() th1 = TheatreModel(name="theatre1", screens=2, location="hyd") th2 = TheatreModel(name="theatre2", screens=4, location="hyd") th3 = TheatreModel(name="theatre3", screens=1, location="hyd") th4 = TheatreModel(name="test", screens=1, location="hyd") db.session.add(th1) db.session.add(th2) db.session.add(th3) db.session.add(th4) mv1 = MovieModel(name="avengers1", genre="gnr1") mv2 = MovieModel(name="avengers2", genre="gnr2") mv3 = MovieModel(name="avengers3", genre="gnr1") mv4 = MovieModel(name="avengers4", genre="gnr3") mv5 = MovieModel(name="test", genre="gnr3") db.session.add(mv1) db.session.add(mv2) db.session.add(mv3) db.session.add(mv4) db.session.add(mv5) db.session.commit() sch1 = ScheduleModel(movie_id=mv1.id, theatre_id=th1.id, screen=1, time="11:30") sch2 = ScheduleModel(movie_id=mv2.id, theatre_id=th1.id, screen=2, time="11:50") sch3 = ScheduleModel(movie_id=mv3.id, theatre_id=th1.id, screen=1, time="14:30") sch4 = ScheduleModel(movie_id=mv2.id, theatre_id=th1.id, screen=1, time="16:15") sch5 = ScheduleModel(movie_id=mv4.id, theatre_id=th1.id, screen=2, time="19:00") sch6 = ScheduleModel(movie_id=mv2.id, theatre_id=th1.id, screen=1, time="20:30") sch7 = ScheduleModel(movie_id=mv1.id, theatre_id=th1.id, screen=2, time="23:30") sch8 = ScheduleModel(movie_id=mv4.id, theatre_id=th1.id, screen=2, time="21:05") sch9 = ScheduleModel(movie_id=mv4.id, theatre_id=th2.id, screen=1, time="10:45") sch10 = ScheduleModel(movie_id=mv3.id, theatre_id=th2.id, screen=1, time="13:50") sch11 = ScheduleModel(movie_id=mv3.id, theatre_id=th2.id, screen=1, time="18:35") sch12 = ScheduleModel(movie_id=mv2.id, theatre_id=th2.id, screen=1, time="21:30") sch13 = ScheduleModel(movie_id=mv1.id, theatre_id=th2.id, screen=2, time="11:05") sch14 = ScheduleModel(movie_id=mv4.id, theatre_id=th2.id, screen=2, time="15:00") sch15 = ScheduleModel(movie_id=mv4.id, theatre_id=th2.id, screen=2, time="19:30") sch16 = ScheduleModel(movie_id=mv2.id, theatre_id=th2.id, screen=2, time="22:00") sch17 = ScheduleModel(movie_id=mv1.id, theatre_id=th2.id, screen=3, time="10:15") sch18 = ScheduleModel(movie_id=mv1.id, theatre_id=th2.id, screen=3, time="14:30") sch19 = ScheduleModel(movie_id=mv2.id, theatre_id=th2.id, screen=3, time="17:30") sch20 = ScheduleModel(movie_id=mv2.id, theatre_id=th2.id, screen=3, time="23:30") sch21 = ScheduleModel(movie_id=mv4.id, theatre_id=th2.id, screen=4, time="09:30") sch22 = ScheduleModel(movie_id=mv1.id, theatre_id=th2.id, screen=4, time="12:30") sch23 = ScheduleModel(movie_id=mv3.id, theatre_id=th2.id, screen=4, time="16:50") sch24 = ScheduleModel(movie_id=mv4.id, theatre_id=th2.id, screen=4, time="20:50") sch25 = ScheduleModel(movie_id=mv4.id, theatre_id=th3.id, screen=4, time="10:35") sch26 = ScheduleModel(movie_id=mv3.id, theatre_id=th3.id, screen=4, time="13:15") sch27 = ScheduleModel(movie_id=mv4.id, theatre_id=th3.id, screen=4, time="16:05") sch28 = ScheduleModel(movie_id=mv1.id, theatre_id=th3.id, screen=4, time="21:50") db.session.add(sch1) db.session.add(sch2) db.session.add(sch3) db.session.add(sch4) db.session.add(sch5) db.session.add(sch6) db.session.add(sch7) db.session.add(sch8) db.session.add(sch9) db.session.add(sch10) db.session.add(sch11) db.session.add(sch12) db.session.add(sch13) db.session.add(sch14) db.session.add(sch15) db.session.add(sch16) db.session.add(sch17) db.session.add(sch18) db.session.add(sch19) db.session.add(sch20) db.session.add(sch21) db.session.add(sch22) db.session.add(sch23) db.session.add(sch24) db.session.add(sch25) db.session.add(sch26) db.session.add(sch27) db.session.add(sch28) db.session.commit()
def get(self, _id): movie = MovieModel.find_by_id(_id) if movie: return movie_schema.dump(movie).data
def delete(self, name): movie = MovieModel.find_by_name(name) if movie: movie.delete_from_db() return {'message': 'Movie deleted'}
def get(self, name): movie = MovieModel.find_by_name(name) if movie: return movie.json() return {'message': 'Movie not found'}, 404