Example #1
0
def add_new_movie(request):
    try:
        movie_name = request.POST.get('movie_name')
        director = request.POST.get('director')
        genre = request.POST.get('genre')
        popularity = request.POST.get('popularity')
        score = request.POST.get('imdb_score')
        if not MovieStore.objects.filter(name=movie_name.strip()).exists():
            movie_obj = MovieStore(name=movie_name,
                                   imdb_score=score,
                                   genre=genre,
                                   number_99popularity=popularity,
                                   director=director)
            movie_obj.save()
            return HttpResponse(http_response_smart(
                {}, "Movie Data added successfully", "success"),
                                status=200)
        else:
            return HttpResponse(http_response_smart(
                {}, "Movie: " + movie_name + " already exists!", "success"),
                                status=200)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #2
0
def search_movie(request):
    try:
        filter_map = request.POST.get('search_filter')
        if filter_map:
            filter_map_json = json.loads(filter_map)
            kwargs, genre_list = build_filter(filter_map_json)
            movie_data = MovieStore.objects.filter(**kwargs).all()
            if len(genre_list) > 0:
                for genre in genre_list:
                    movie_data = movie_data.filter(genre__icontains=genre)
            movie_data = movie_data.values('id', 'name', 'imdb_score',
                                           'number_99popularity', 'genre',
                                           'director')
            return HttpResponse(http_response_smart(list(movie_data),
                                                    "Movie Data", "success"),
                                status=200)
        else:
            return HttpResponse(http_response_smart({}, "Parameter mismatch",
                                                    "fail"),
                                status=400)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #3
0
def get_all_movies(request):
    try:
        movie_data = MovieStore.objects.values('id', 'name', 'imdb_score',
                                               'number_99popularity', 'genre',
                                               'director')
        return HttpResponse(
            http_response_smart(list(movie_data), "Movie Data", "success"))
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #4
0
def delete_movie_by_name(request):
    try:
        movie_name = request.POST.get('movie_name')
        if movie_name:
            movie_obj = MovieStore.objects.filter(name__iexact=movie_name)
            movie_obj.delete()
        else:
            return HttpResponse(http_response_smart({}, "Parameter mismatch",
                                                    "fail"),
                                status=400)
        return HttpResponse(http_response_smart({}, "Movie: " + movie_name +
                                                " deleted", "success"),
                            status=200)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #5
0
def search_movie_by_imdb_rating(request):
    try:
        min_score = request.POST.get('score')
        if min_score:
            movie_data = MovieStore.objects.filter(
                imdb_score__gte=min_score).values('id', 'name', 'imdb_score',
                                                  'number_99popularity',
                                                  'genre', 'director')
            return HttpResponse(http_response_smart(list(movie_data),
                                                    "Movie Data", "success"),
                                status=200)
        else:
            return HttpResponse(http_response_smart({}, "Parameter mismatch",
                                                    "fail"),
                                status=400)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #6
0
def search_movie_by_director(request):
    try:
        dir_name_regex = request.POST.get('director_regex')
        if dir_name_regex:
            movie_data = MovieStore.objects.filter(
                director__icontains=dir_name_regex).values(
                    'id', 'name', 'imdb_score', 'number_99popularity', 'genre',
                    'director')
            return HttpResponse(http_response_smart(list(movie_data),
                                                    "Movie Data", "success"),
                                status=200)
        else:
            return HttpResponse(http_response_smart({}, "Parameter mismatch",
                                                    "fail"),
                                status=400)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #7
0
def import_movie_data_from_json(request):
    try:
        json_file = request.FILES["movie_json"]
        data = json.load(json_file)
        for row in data:
            movie_name = row["name"]
            if not MovieStore.objects.filter(name=movie_name.strip()).exists():
                movie_obj = MovieStore(name=movie_name,
                                       imdb_score=row['imdb_score'],
                                       genre=",".join(row['genre']),
                                       number_99popularity=row['99popularity'],
                                       director=row['director'])
                movie_obj.save()
        return HttpResponse(http_response_smart({},
                                                "Data Imported successfully",
                                                "success"),
                            status=200)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)
Example #8
0
def edit_movie_details(request):
    try:
        movie_id = request.POST.get('movie_id')
        param_name = request.POST.get('edit_param')
        new_value = request.POST.get('new_value')
        old_value = ""
        if not movie_id or not param_name or not new_value:
            return HttpResponse(http_response_smart({}, "Parameter mismatch",
                                                    "fail"),
                                status=400)
        movie_objects = MovieStore.objects.filter(id=movie_id)
        if movie_objects:
            movie_obj = movie_objects[0]
            if param_name == "name":
                old_value = movie_obj.name
                if old_value == new_value:
                    return HttpResponse(http_response_smart(
                        {}, "New movie name matches old name", 'success'),
                                        status=200)
                movie_obj.name = new_value
            if param_name == "rating":
                old_value = movie_obj.imdb_score
                if old_value == new_value:
                    return HttpResponse(http_response_smart(
                        {}, "New rating matches old rating", 'success'),
                                        status=200)
                movie_obj.imdb_score = new_value
            if param_name == "popularity":
                old_value = movie_obj.number_99popularity
                if old_value == new_value:
                    return HttpResponse(http_response_smart(
                        {}, "New popularity matches old popularity",
                        'success'),
                                        status=200)
                movie_obj.number_99popularity = new_value
            # Here, I am considering the user is trying to add a genre to existing genre list.
            # This can be replaced by removing all existing genre and creating new list as well
            if param_name == "genre":
                old_value = movie_obj.genre
                if new_value in old_value.split(','):
                    return HttpResponse(http_response_smart(
                        {}, "This Genre already exists for this movie",
                        'success'),
                                        status=200)
                else:
                    old_value = old_value.split(",") + [new_value]
                    movie_obj.genre = ",".join(old_value)
            if param_name == "director":
                old_value = movie_obj.director
                if old_value == new_value:
                    return HttpResponse(http_response_smart(
                        {}, "New director name matches old director name",
                        'success'),
                                        status=200)
                movie_obj.director = new_value
            movie_obj.save()
            return HttpResponse(http_response_smart(
                {}, "Value Updated Successfully", 'success'),
                                status=200)
    except Exception as e:
        print(str(e))
        return HttpResponse(http_response_smart({}, "Error: " + str(e),
                                                "fail"),
                            status=403)