Esempio n. 1
0
def add_movie(request, user):
    """
    Add new Movie
    :param request: API Request Details
    :param user: Admin User Details
    """
    try:
        movie_data = json.loads(request.data)
        name = movie_data['name']
        director = movie_data['director']
        popularity = movie_data['99popularity']
        genre = ','.join(movie_data['genre'])
        imdb_score = movie_data['imdb_score']

        if not db.session.query(Movies).filter_by(name=name, director=director).first():
            movie = Movies(
                name=name,
                director=director,
                popularity=popularity,
                genre=genre,
                imdb_score=imdb_score,
                created_by=user.id,
            )
            db.session.add(movie)
            db.session.commit()

            logging.info("Movie added to DB successfully")

            # Add Movie to Elasticsearch
            try:
                movie_data['id'] = str(movie.id)
                es = ESOperations("imdb")
                es.create_document(movie_data)
                logging.info("Movie added to ES successfully")
            except Exception as e:
                logging.error(str(e))
                pass

            response_object = {
                'status': 'success',
                'message': 'Movie added successfully.',
                'data': movie.serialize()
            }
            return make_response(jsonify(response_object)), 201
        else:
            response_object = {
                'status': 'error',
                'message': 'Movie already exists.'
            }
            return make_response(jsonify(response_object)), 201
    except Exception as e:
        logging.error(str(e))
        response_object = {
            'status': 'error',
            'message': str(e)
        }
        return make_response(jsonify(response_object)), 400