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