Esempio n. 1
0
    def post(cls):
        """
        POST requests for login resource
        Returns:

        """
        try:
            user_json = request.get_json()
            user_from_schema = user_schema.load(user_json, )
            user = UserModel.find_by_email(user_from_schema.email)
            user_ip = get_client_ip(request)
            if user and user.check_password(user_from_schema.password):
                if not user.disabled:
                    access_token, refresh_token = generate_auth_token(
                        user, user_ip)
                    time_now = datetime.datetime.now(pytz.utc)
                    user_tracking = TrackLogin(user.id,
                                               ip_address=user_ip,
                                               created_on=time_now)
                    user_tracking.save()
                    return {
                        "access_token": access_token,
                        "refresh_token": refresh_token
                    }, 200
                return {"message": get_text("user_disabled")}, 401
            return {"message": get_text("user_invalid")}, 401

        except Exception as _:
            return {"message": get_text("user_error_logging_in")}, 500
Esempio n. 2
0
    def post(cls):
        """
        POST request to add a movie
        Returns:

        """

        current_user, movie, user_id, title = cls.load_movie_and_user(
            movie_schema)

        try:
            movie_available = movie.find_by_title_and_user_id(title, user_id)
            if not movie_available:
                title = movie.title
                description = movie.description
                rating = movie.rating
                movie = MovieModel()
                movie.create_movie(title, description, rating,
                                   current_user["_id"])
                movie.save()
                return {
                    "message": get_text("movie_created"),
                    "movie": movie.json
                }, 201
            return {"message": get_text("movie_exist").format(title)}, 400
        except Exception as _:
            print(_)
            return {"message": get_text("error_adding_movie")}, 500
Esempio n. 3
0
 def delete(cls):
     """
     Remove a movie from a list
     Returns:
     """
     current_user, movie, user_id, title = cls.load_movie_and_user(
         delete_movie_schema)
     try:
         movie_available = movie.find_by_title_and_user_id(title, user_id)
         if not movie_available:
             return {
                 "message": get_text("movie_not_exist").format(title)
             }, 404
         movie_available.remove()
         return {"message": get_text("movie_removed").format(title)}, 200
     except Exception as _:
         return {"message": get_text("error_deleting_movie")}, 500
Esempio n. 4
0
    def post(cls):
        """
        POST request for registration Resource
        Returns:

        """
        user_json = request.get_json()
        user = user_schema.load(user_json, )

        if not is_email_valid(user.email):
            return {
                "message": get_text("user_email_bad_format").format(user.email)
            }, 400
        if UserModel.find_by_email(user.email):
            return {"message": get_text("user_email_exist")}, 400
        user = user.create_user(user.email, user.password)
        user.save()

        return {"message": get_text("user_registered")}, 201
Esempio n. 5
0
    def put(cls):
        """
        Update a movie rating
        Returns:

        """
        current_user, movie, user_id, title = cls.load_movie_and_user(
            update_movie_schema)
        try:
            movie_available = movie.find_by_title_and_user_id(title, user_id)
            if not movie_available:
                return {"message": get_text("movie_not_exist").format(
                    title)}, \
                       404
            movie_available.update_movie_rating(movie.rating)
            movie_available.save()
            return {
                "message": get_text("movie_updated").format(title),
                "movie": movie_available.json
            }, 200

        except Exception as _:
            return {"message": get_text("error_updating_movie")}, 500
Esempio n. 6
0
 def get(cls, page: int):
     """
     get movies from an external API
     Returns:
     """
     if page < MOVIES_MIN_PAGINATION or page > MOVIES_MAX_PAGINATION:
         return ({
             "message":
             get_text("movies_pagination_out_bounds").format(
                 MOVIES_MIN_PAGINATION, MOVIES_MAX_PAGINATION)
         }, 400)
     response = get_movies(MOVIES_URL + '&language=en-US', page)
     response = response.json()
     result = response['results']
     result = result[:20]
     return {"movies": result}, 200