def post(self): """Method for POST a new single movie item to the database""" if not request.json: return create_error_response(415, "Unsupported media type", "Requests must be JSON" ) try: validate(request.json, Movie.get_schema()) except ValidationError as e: return create_error_response(400, "Invalid JSON document", str(e)) #Find uploader for the movie: uploader=request.json["uploader"] #email=request.json["email"] uploader_object = Uploader.query.filter_by(uploader_name=uploader).first() movie = Movie( name=request.json["name"], genre=request.json["genre"], uploader=uploader_object ) try: db.session.add(movie) db.session.commit() except IntegrityError: return create_error_response(409, "Already exists", "Movie with name '{}' already exists.".format(request.json["name"]) ) return Response(status=201, headers={ "Location": api.url_for(MovieItem, movie=request.json["name"]) })
def put(self, movie): """Method for editing (PUT) a single movie item in the database""" db_movie = Movie.query.filter_by(name=movie).first() if db_movie is None: return create_error_response(404, "Not found", "No movie was found with the name {}".format(movie) ) if not request.json: return create_error_response(415, "Unsupported media type", "Requests must be JSON" ) try: validate(request.json, Movie.get_schema()) except ValidationError as e: return create_error_response(400, "Invalid JSON document", str(e)) db_movie.name = request.json["name"] db_movie.genre = request.json["genre"] try: db.session.commit() except IntegrityError: return create_error_response(409, "Already exists", "Movie with name '{}' already exists.".format(request.json["name"]) ) return Response(status=204)
def add_control_modify_movie(self, movie): """Control for editing a movie""" self.add_control( "edit", api.url_for(MovieItem, movie=movie), method="PUT", encoding="json", title="Edit this movie", schema=Movie.get_schema() )
def add_control_add_movie(self): """Control for adding a movie""" self.add_control( "mwl:add-movie", api.url_for(MovieCollection), method="POST", encoding="json", title="Add a new movie", schema=Movie.get_schema() )