Esempio n. 1
0
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)
Esempio n. 4
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
def getProduct(request, id):
    product = Product.objects.get(id=id)
    serializer = ProductSerializer(product)
    return Response(serializer.data)