From df7649c3e6d1649a84e5c078101cb98fb5558ff1 Mon Sep 17 00:00:00 2001 From: michigg Date: Sat, 31 Mar 2018 23:00:07 +0200 Subject: [PATCH] Update comment, image, rating endpoints --- ofu_app/apps/registration/api/serializers.py | 6 ++-- ofu_app/apps/registration/api/urls.py | 6 ++-- ofu_app/apps/registration/api/views.py | 33 ++++++++++++++++++-- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/ofu_app/apps/registration/api/serializers.py b/ofu_app/apps/registration/api/serializers.py index 76ca69f..c901e9b 100644 --- a/ofu_app/apps/registration/api/serializers.py +++ b/ofu_app/apps/registration/api/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from django.contrib.auth.models import User from apps.food.models import UserFoodRating, UserFoodImage, UserFoodComment, SingleFood, FoodImage +from apps.food.api.v1_2.serializers.main_serializers import MinimalSingleFoodSerializer class FoodImageSerializer(serializers.HyperlinkedModelSerializer): @@ -11,10 +12,11 @@ class FoodImageSerializer(serializers.HyperlinkedModelSerializer): class UserFoodImageSerializer(serializers.HyperlinkedModelSerializer): image = FoodImageSerializer(many=False, read_only=True) + food = MinimalSingleFoodSerializer(many=False, read_only=True) class Meta: model = UserFoodImage - fields = ('id', 'image') + fields = ('id', 'food', 'image') class SingleFoodSerializer(serializers.HyperlinkedModelSerializer): @@ -44,7 +46,7 @@ class UserCommentsSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = UserFoodComment - fields = ('id', 'food', 'comment') + fields = ('id', 'food', 'description', 'title') class UserInformationSerializer(serializers.HyperlinkedModelSerializer): diff --git a/ofu_app/apps/registration/api/urls.py b/ofu_app/apps/registration/api/urls.py index 9b1b857..22f901c 100644 --- a/ofu_app/apps/registration/api/urls.py +++ b/ofu_app/apps/registration/api/urls.py @@ -20,7 +20,7 @@ from apps.food.models import Menu urlpatterns = [ # API Version 1.1 url(r'^account/$', api_views.UserInformations.as_view(), name='api-v1_1-user-information'), - url(r'^account/food/rating/$', api_views.UserRatings.as_view(), name='api-v1_1-user-rating'), - url(r'^account/food/pic/$', api_views.UserImages.as_view(), name='api-v1_1-user-image'), - url(r'^account/food/comment/$', api_views.UserComments.as_view(), name='api-v1_1-user-comment'), + url(r'^account/food/ratings/$', api_views.UserRatings.as_view(), name='api-v1_1-user-rating'), + url(r'^account/food/images/$', api_views.UserImages.as_view(), name='api-v1_1-user-image'), + url(r'^account/food/comments/$', api_views.UserComments.as_view(), name='api-v1_1-user-comment'), ] diff --git a/ofu_app/apps/registration/api/views.py b/ofu_app/apps/registration/api/views.py index 7dcb322..322c2ca 100644 --- a/ofu_app/apps/registration/api/views.py +++ b/ofu_app/apps/registration/api/views.py @@ -23,7 +23,16 @@ class UserRatings(generics.ListAPIView): def get_queryset(self): user = self.request.user - return UserFoodRating.objects.filter(user=user).order_by('food__name') + food_id = self.request.query_params.get('food_id') + queryset = UserFoodRating.objects.filter(user=user).order_by('food__name') + if food_id: + try: + queryset = queryset.filter(food_id=food_id) + except ValueError as e: + # TODO: return Exception + return [] + + return queryset @permission_classes((IsAuthenticated,)) @@ -32,7 +41,16 @@ class UserImages(generics.ListAPIView): def get_queryset(self): user = self.request.user - return UserFoodImage.objects.filter(user=user).order_by('food__name') + food_id = self.request.query_params.get('food_id') + queryset = UserFoodImage.objects.filter(user=user).order_by('food__name') + if food_id: + try: + queryset = queryset.filter(food_id=food_id) + except ValueError as e: + # TODO: return Exception + return [] + + return queryset @permission_classes((IsAuthenticated,)) @@ -41,4 +59,13 @@ class UserComments(generics.ListAPIView): def get_queryset(self): user = self.request.user - return UserFoodComment.objects.filter(user=user).order_by('food__name') + food_id = self.request.query_params.get('food_id') + queryset = UserFoodComment.objects.filter(user=user).order_by('food__name') + if food_id: + try: + queryset = queryset.filter(food_id=food_id) + except ValueError as e: + # TODO: return Exception + return [] + + return queryset