Example #1
0
    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"])
        })
Example #2
0
    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)
Example #3
0
 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()
     )
Example #4
0
 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()
     )