Ejemplo n.º 1
0
 def put(self, request, id):
     genre = self.get_object(id)
     if isinstance(
             genre,
             Response) and genre.status_code == status.HTTP_404_NOT_FOUND:
         return Response(status=status.HTTP_404_NOT_FOUND)
     serializer = GenreSerializer(genre, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
     return Response(status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
    def get(self, request):
        id = request.query_params.get('genre_id', None)
        if id:
            genre = self.get_object(id)
            serializer = GenreSerializer(genre)
        else:
            genre = Genre.objects.all()
            serializer = GenreSerializer(genre, many=True)

        return Response({
            'data': serializer.data,
            'success': True
        },
                        status=status.HTTP_200_OK)
Ejemplo n.º 3
0
 def put(self, request, format=None):
     id = request.data.get('genre_id', None)
     genre = self.get_object(id)
     if genre:
         serializer = GenreSerializer(genre, data=request.data)
         if serializer.is_valid():
             serializer.save()
             return Response({
                 'data': serializer.data,
                 'success': True
             },
                             status=status.HTTP_200_OK)
     return Response({
         'error': serializer.errors,
         'success': False
     },
                     status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 4
0
 def get(self, request, id):
     genre = self.get_object(id)
     if isinstance(
             genre,
             Response) and genre.status_code == status.HTTP_404_NOT_FOUND:
         return Response(status=status.HTTP_404_NOT_FOUND)
     serializer = GenreSerializer(genre)
     return Response(serializer.data)
Ejemplo n.º 5
0
 def test_get_one_genre(self):
     """
     This test ensures that genre added in the setUp method
     exist when we make a GET request to the /genres/1 endpoint
     """
     response = self.client.get('/genres/1')
     expected = Genre.objects.get(id=1)
     serialized = GenreSerializer(expected)
     self.assertEqual(response.data, serialized.data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
Ejemplo n.º 6
0
 def test_get_all_genres(self):
     """
     This test ensures that all genres added in the setUp method
     exist when we make a GET request to the /genres endpoint
     """
     response = self.client.get('/genres')
     expected = Genre.objects.all()
     serialized = GenreSerializer(expected, many=True)
     self.assertEqual(response.data, serialized.data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
Ejemplo n.º 7
0
class CustomRegisterSerializer(RegisterSerializer):
    nickname = serializers.CharField(required=True, max_length=10)
    date_of_birth = models.DateTimeField(blank=True, null=True)
    like_genres = GenreSerializer(many=True)

    def get_cleaned_data(self):
        data_dict = super().get_cleaned_data()
        data_dict['nickname'] = self.validated_data.get('nickname', '')
        data_dict['date_of_birth'] = self.validated_data.get('date_of_birth', '')
        data_dict['like_genres'] = self.validated_data.get('like_genres', '')
        return data_dict
Ejemplo n.º 8
0
 def post(self, request, format=None):
     serializer = GenreSerializer(data=request.data)
     if serializer.is_valid():
         try:
             serializer.save()
         except:
             return Response({
                 'error': serializer.errors,
                 'success': False
             },
                             status=status.HTTP_400_BAD_REQUEST)
         return Response({
             'data': serializer.data,
             'success': True
         },
                         status=status.HTTP_201_CREATED)
     return Response({
         'error': serializer.errors,
         'success': False
     },
                     status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 9
0
def genre_list(request):
    if request.method == 'GET':
        genres = Genre.objects.all()
        serializer = GenreSerializer(genres, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = GenreSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()  # save() will call serializer's create() method
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 10
0
def genre_data(request):
    res = requests.get(
        "https://api.themoviedb.org/3/genre/movie/list?api_key=669e119f2e7f069615e4be9aa1ced416&language=ko"
    )
    data = res.json()["genres"]
    serializer = GenreSerializer(data=data, many=True)

    try:
        serializer.is_valid(raise_exception=True)
    except:
        logging.error(traceback.format_exc())

    if serializer.is_valid():
        serializer.save()
    return Response(serializer.data)
Ejemplo n.º 11
0
def topGenreByYearView(request):
    year = request.GET.get('year')

    if not year:
        return Response({'message': 'Required `year` query parameter'},
                        status=400)

    try:
        year = int(year)
    except:
        return Response({'message': 'Unexpected year, must be 4 digits'},
                        status=400)

    start = date(int(year) - 1, 12, 31)
    end = date(int(year) + 1, 1, 1)
    top_genre = Genre.objects.filter(
        movie__release_date__gt=start, movie__release_date__lt=end).annotate(
            c=Count('name')).order_by('-c').first()

    if top_genre:
        serializer = GenreSerializer(top_genre, context={'request': request})
        return Response(serializer.data)
    else:
        return Response({'message': 'No top genre found'}, status=404)
Ejemplo n.º 12
0
def genre_detail(request, pk):
    try:
        genre = Genre.objects.get(pk=pk)
    except Genre.DoesNotExist:
        '''
        What is DoesNotExist ?
        This exception is raised by the ORM in a couple places,
        for example by QuerySet.get() when an object is not found
        for the given query parameters.
        https://docs.djangoproject.com/en/3.0/ref/models/instances/#django.db.models.Model.DoesNotExist
        '''
        return Response(status=status.HTTP_404_NOT_FOUND)
    if request.method == 'GET':
        serializer = GenreSerializer(genre)
        return Response(serializer.data)
    elif request.method == 'PUT':
        serializer = GenreSerializer(genre, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
        return Response(status=status.HTTP_400_BAD_REQUEST)
    elif request.method == 'DELETE':
        genre = genre.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
Ejemplo n.º 13
0
def genre_list(request):
    qs = Genre.objects.all()
    serial = GenreSerializer(qs, many=True)
    return Response(serial.data, status=200)
Ejemplo n.º 14
0
class UserSerializer(serializers.ModelSerializer):
    like_genres = GenreSerializer(many=True)

    class Meta:
        model = User
        fields = ('id', 'username', 'password', 'like_genres')
Ejemplo n.º 15
0
def genres_entire(request):
    genres = Genre.objects.all()
    serializer = GenreSerializer(genres, many=True)
    return JsonResponse(serializer.data, safe=False)
Ejemplo n.º 16
0
 def post(self, request):
     serializer = GenreSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()  # save() will call serializer's create() method
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 17
0
 def get(self, request):
     genres = Genre.objects.all()
     serializer = GenreSerializer(genres, many=True)
     return Response(serializer.data)
Ejemplo n.º 18
0
class UserSerializer2(serializers.ModelSerializer):
    like_genres = GenreSerializer(many=True)

    class Meta:
        model = User
        fields = '__all__'