def getTopProducts(request): products = Product.objects.filter(rating__gte=4).order_by('-rating')[0:5] serializer = ProductSerializer(products, many=True) return Response(serializer.data)
def getTopProducts(requests): products = Product.objects.filter(rating__gte=4).order_by('-rating')[0:5] # greater than or equal to, use - to reverse order, top 5 serializer = ProductSerializer(products, many=True) return Response(serializer.data)
def getProduct(request, pk): product = Product.objects.get(_id=pk) serializer = ProductSerializer(product, many=False) return Response(serializer.data)
def getProducts(request): products = Product.objects.all() serializer = ProductSerializer(products, many=True) return Response(serializer.data)
def getProduct(request, pk): product = Product.objects.get(_id=pk) # when returning one object many is set to false serializer = ProductSerializer(product, many=False) return Response(serializer.data)
def getProducts(request): products = Product.objects.all() serializer = ProductSerializer(products, many=True) # Data needs to be serialized before its returned to the frontend # when we are using the django rest framework we must serialize the data we are returning return Response(serializer.data)
def productView(request): pk = request.query_params.get('pk') type = request.query_params.get('type') query = request.query_params.get('keyword') page = request.query_params.get('page') user = request.user data = request.data if type == "getproducts": if query == None: query = "" products = Product.objects.filter(name__icontains=query) # here the number of products per page paginator = Paginator(products, 5) if page == None: page = 1 try: products = paginator.page(page) except EmptyPage: products = paginator.page(paginator.num_pages) page = int(page) serializer = ProductSerializer(products, many=True) return Response({'products': serializer.data, 'page': page, 'pages': paginator.num_pages}) elif type == "getproduct": product = Product.objects.get(_id=pk) serializer = ProductSerializer(product, many=False) return Response(serializer.data) elif type == "gettop": products = Product.objects.filter( rating__gte=4).order_by('-rating')[0:5] serializer = ProductSerializer(products, many=True) return Response(serializer.data) elif type == "delete": if user.is_staff: product = Product.objects.get(_id=pk) product.delete() return Response('Product Deleted') else: return Response({'detail': 'Not authorized to view this order'}, status=status.HTTP_400_BAD_REQUEST) elif type == "create": if user.is_staff: product = Product.objects.create( user=user, name='Sample Name', price=0, brand='Sample Brand', countInStock=0, category='Sample Category', description='' ) serializer = ProductSerializer(product, many=False) return Response(serializer.data) else: return Response({'detail': 'Not authorized to view this order'}, status=status.HTTP_400_BAD_REQUEST) elif type == "update": if user.is_staff: if pk != "": product = Product.objects.get(_id=pk) product.name = data['name'] product.price = data['price'] product.brand = data['brand'] product.countInStock = data['countInStock'] product.category = data['category'] product.description = data['description'] product.save() serializer = ProductSerializer(product, many=False) return Response(serializer.data) else: return Response("Not found") else: return Response({'detail': 'Not authorized to view this order'}, status=status.HTTP_400_BAD_REQUEST) elif type == "createreview": if user != "AnonymousUser": product = Product.objects.get(_id=pk) # review already exists alreadyExists = product.review_set.filter(user=user).exists() if alreadyExists: content = {'detail': 'Product already reviewed'} return Response(content, status=status.HTTP_400_BAD_REQUEST) # no rating or 0 elif data['rating'] == 0: content = {'detail': 'Please select a rating'} return Response(content, status=status.HTTP_400_BAD_REQUEST) # create review else: review = Review.objects.create( user=user, product=product, name=user.first_name, rating=data['rating'], comment=data['comment'], ) reviews = product.review_set.all() product.numReviews = len(reviews) total = 0 for i in reviews: total += i.rating product.rating = total / len(reviews) product.save() return Response('Review Added') else: content = {'detail': 'Please Login to write a review'} return Response(content, status=status.HTTP_400_BAD_REQUEST) else: return Response({}, status=status.HTTP_404_NOT_FOUND)
def getProduct(request, id): product = Product.objects.get(id=id) serializer = ProductSerializer(product) return Response(serializer.data)