Esempio n. 1
0
 def put(self, request, pk, format=None):
     food = self.get_object(pk)
     serializer = FoodSerializer(food, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 2
0
 def put(self, request, pk, format=None):
     food = self.get_object(pk)
     serializer = FoodSerializer(food, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 3
0
class AccountSerializer(serializers.ModelSerializer):
    # id = serializers.IntegerField()
    user = UserSerializer()
    food_favorites = FoodSerializer(many=True)
    food_liked = FoodSerializer(many=True)
    food_disliked = FoodSerializer(many=True)
    images_liked = ImageSerializer(many=True)
    reviews_liked = ReviewSerializer(many=True)
    reviews_disliked = ReviewSerializer(many=True)

    class Meta:
        model = Account
        fields = [
            'id', 'user', 'food_favorites', 'food_liked', 'food_disliked',
            'images_liked', 'reviews_liked', 'reviews_disliked'
        ]

    def update(self, instance, validated_data):
        user_data = validated_data.pop('user')
        user = User.objects.get(username=user_data['username'])
        user.first_name = user_data['first_name']
        user.last_name = user_data['last_name']
        user.email = user_data['email']
        user.save()
        account = Account.objects.get(id=instance.pk)

        if self.context[0] == 'param':
            return account
        elif self.context[0] == 'images_liked':
            updated_data = validated_data.pop(self.context[0])
            if self.context[1] == 'upvote':
                for data in updated_data:
                    img = data['image']
                    query = Image.objects.get(image=img)
                    if not account.images_liked.filter(pk=query.id).exists():
                        account.images_liked.add(query)
                        Image.objects.filter(image=img).update(
                            votes=F('votes') + 1)
            elif self.context[1] == 'downvote':
                for data in updated_data:
                    img = data['image']
                    query = Image.objects.get(image=img)
                    if account.images_liked.filter(pk=query.id).exists():
                        account.images_liked.remove(query)
                        Image.objects.filter(image=img).update(
                            votes=F('votes') - 1)
        else:
            updated_data = validated_data.pop(self.context[0])
            for data in updated_data:
                food = data['name']
                query = Food.objects.get(name=food)
                if not account.food_liked.filter(pk=query.id).exists():
                    account.food_liked.add(query)
        return account
Esempio n. 4
0
 def get(self, request, search_term, format=None):
     if request.query_params.get('results_per_page') is not None:
         results_per_page = int(
             request.query_params.get('results_per_page'))
     else:
         results_per_page = 12
     if request.query_params.get('page_number') is not None:
         page_number = int(request.query_params.get('page_number'))
     else:
         page_number = 1
     terms = search_term.split(' ')
     q_objects = Q()
     for term in terms:
         tags = Tag.objects.filter(name__icontains=term)
         q_objects &= Q(name__icontains=term) | Q(tags__in=tags)
     foods = Food.objects.filter(q_objects).all().distinct()
     total_pages = len(foods) // results_per_page
     if not foods:
         data = []
     else:
         foods = prepare_food(
             request, foods[(page_number - 1) * 12:(page_number) * 12])
         data = FoodSerializer(foods, many=True).data
     return Response({
         'data': data,
         'pagination': {
             'results_per_page': results_per_page,
             'page_number': page_number,
             'total_pages': total_pages
         }
     })
Esempio n. 5
0
 def get(self, request, format=None):
     trending = Food.objects.order_by('-updated_at')[:12].all()
     trending = prepare_food(request, trending)
     trending = FoodSerializer(trending, many=True).data
     # trending = self.prepare_data(request=request, data=trending)
     hot_stuff = Food.objects.order_by('-numRating')[:12].all()
     hot_stuff = prepare_food(request, hot_stuff)
     hot_stuff = FoodSerializer(hot_stuff, many=True).data
     popular = Food.objects.order_by('-avgRating')[:12].all()
     popular = prepare_food(request, popular)
     popular = FoodSerializer(popular, many=True).data
     return Response({
         'trending': trending,
         'hot stuff': hot_stuff,
         'popular': popular
     })
Esempio n. 6
0
 def post(self, request, format=None):
     serializer = FoodSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 7
0
 def prepare_data(request, data):
     data = prepare_food(request, data)
     data = FoodSerializer(data, many=True).data
     return data
Esempio n. 8
0
 def get(self, request, account_pk, format=None):
     favorites = self.get_object(account_pk=account_pk)
     favorites = prepare_food(request, favorites)
     serializer = FoodSerializer(favorites, many=True)
     return Response(serializer.data)
Esempio n. 9
0
 def get(self, request, restaurant_pk, format=None):
     foods = self.get_object(restaurant_pk=restaurant_pk)
     foods = prepare_food(request, foods)
     serializer = FoodSerializer(foods, many=True)
     return Response(serializer.data)
Esempio n. 10
0
 def get(self, request, pk, format=None):
     food = self.get_object(pk)
     food = prepare_food(request, [food])[0]
     serializer = FoodSerializer(food)
     return Response(serializer.data)
Esempio n. 11
0
 def post(self, request, format=None):
     serializer = FoodSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 12
0
 def get(self, request, format=None):
     foods = Food.objects.all()
     foods = prepare_food(request, foods)
     serializer = FoodSerializer(foods, many=True)
     return Response(serializer.data)