Ejemplo n.º 1
0
    def update(self, request, pk=None):
        product_to_update = request.data.get('product')
        serializer = ProductSerializer(data=product_to_update)

        if serializer.is_valid(raise_exception=True):
            queryset = Product.objects.all()
            product = get_object_or_404(queryset, pk=pk)

            if product_to_update['shop_name'] and product_to_update['shop_name'].isnumeric() and \
                    Shop.objects.get(pk=product_to_update['shop_name']):
                product.shop_name = product_to_update['shop_name']

            if product_to_update['title']:
                product.title = product_to_update['title']

            if product_to_update['link']:
                product.link = product_to_update['link']

            if product_to_update['description']:
                product.description = product_to_update['description']

            if product_to_update['image_link']:
                product.image_link = product_to_update['image_link']

            product.save()
            serializer_to_return = ProductSerializer(product)

            return Response(serializer_to_return.data)

        else:
            data = {'error': 'Error Updating Product', 'status_code': 400}
            error_serializer = ErrorSerializer(data=data)
            error_serializer.is_valid(True)

            return Response(error_serializer.data)
    def test_product_images(self):
        result_empty = ProductSerializer(
            self.product_empty_related).product_images()
        result = ProductSerializer(self.product).product_images()

        self.assertEqual(len(result_empty), 0)
        self.assertNotEqual(len(result), 0)
Ejemplo n.º 3
0
def category_products(request, category_id):
    try:
        category = Category.objects.get(id=category_id)
    except Category.DoesNotExist as e:
        return Response({'error': str(e)})

    if request.method == 'GET':
        products = category.product_list.all()
        serializer = ProductSerializer(products, many=True)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = CategorySerializer(instance=category, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response({'error': serializer.errors})

    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response({'error': serializer.errors},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 4
0
 def get(self, request, format=None):
     if (request.query_params and request.query_params['id']):
         product = Product.objects.get(pk=request.query_params['id'])
         serializer = ProductSerializer(product)
         return Response(serializer.data)
     products = Product.objects.all()
     serializer = ProductSerializer(products, many=True)
     return Response(serializer.data)
Ejemplo n.º 5
0
def products_list(request):
    if request.method == 'GET':
        products = Product.objects.all()
        serializer = ProductSerializer(products, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response({'error': serializer.errors}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 6
0
def category_product(request, pk):
    if request.method == 'GET':
        products = Product.objects.filter(category_id=pk)
        serializer = ProductSerializer(products, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.error, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 7
0
def products_list(request):
    if request.method == 'GET':
        vacancies = Product.objects.all()
        serializer = ProductSerializer(vacancies, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response({'errors': serializer.errors},
                        status=status.HTTP_501_NOT_IMPLEMENTED)
Ejemplo n.º 8
0
def products_list(request):
    if request.method == 'GET':
        products = Product.objects.all()
        serializer = ProductSerializer(products, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        data = request.data
        serializer = ProductSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response({'error': wrong})
Ejemplo n.º 9
0
def products_of_card(request):
    try:

        card = Card.objects.get(id=2)
    except Card.DoesNotExist as e:
        return Response({'error': str(e)})
    if request.method == 'GET':
        products = card.products.all()
        serializer = ProductSerializer(products, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        return Response(serializer.data)
Ejemplo n.º 10
0
def product_detail(request, product_id):
    product = get_object_or_404(Product,id=product_id)
    if request.method == 'GET':
        serializer = ProductSerializer(product)
        return Response(serializer.data)
    elif request.method == 'PUT':
        serializer = ProductSerializer(instance=product, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response({'errors':serializer.errors})
    elif request.method == 'DELETE':
        product.delete()
        return Response({'deleted':True})
Ejemplo n.º 11
0
 def get(self, request):
     if "prod" in dict(self.request.GET):
         id = self.request.GET.get("prod")
         queryset = Product.objects.filter(pk=id)
         serializer = ProductSerializer(queryset, many=True)
         img_query = Image.objects.filter(product_photo_connect_id=id)
         img_serializer = PictureSerializer(img_query, many=True)
         return Response({
             "data": serializer.data,
             'img_data': img_serializer.data
         })
     else:
         queryset = Product.objects.all()
         serializer = ProductSerializer(queryset, many=True)
         return Response({"data": serializer.data})
Ejemplo n.º 12
0
    def create(self, request):
        product = request.data.get('product')
        serializer = ProductSerializer(data=product)

        if serializer.is_valid(raise_exception=True):
            db_product = Product.objects.create(product)
            product_serializer = ProductSerializer(db_product)

            return Response(product_serializer.data)

        else:
            data = {'error': 'Error Creating Product', 'status_code': 400}
            error_serializer = ErrorSerializer(data=data)
            error_serializer.is_valid(True)

            return Response(error_serializer.data)
Ejemplo n.º 13
0
def recommendationget(request):
    Username = request.GET.get('username')
    Airport = request.GET.get('airport')

    personalizeRt = boto3.client('personalize-runtime',
                                 region_name='ap-south-1')

    response = personalizeRt.get_recommendations(
        campaignArn=
        'arn:aws:personalize:ap-south-1:413538326238:campaign/viman-campaign',
        userId=Username)

    listshop = []
    listrestro = []
    listhotel = []
    for i in response['itemList']:
        print(i['itemId'])
        pro = Product.objects.get(productid=i['itemId'])
        ud = userdetails.objects.get(user=pro.user)
        if ud.airport == Airport.upper():
            serial = ProductSerializer(pro)
            if ud.category == 'STORE':
                listshop.append(serial.data)
            elif ud.category == 'RESTAURANTS':
                listrestro.append(serial.data)
            elif ud.category == 'HOTEL':
                listhotel.append(serial.data)

    return JsonResponse({
        'store': listshop,
        'restro': listrestro,
        'hotel': listhotel
    })
Ejemplo n.º 14
0
    def post(self, request):
        serializer = ProductSerializer(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)
    def test_to_dict(self):
        result = ProductSerializer(self.product).to_dict()

        self.assertEqual(
            result,
            {
                "name": "Test Product",
                "designer": "Test Designer",
                "site_url": "https://www.testsite.com",
                "condition": "New",
                "season": "SS20",
                "collection": "Test Collection",
                "category": "Handbags",
                "brand": "Test Brand",
                "material": "test materials made of lots of things",
                "size": "OS",
                "dimensions": "10in long and 18in wide and 3in depth",
                "sku": "TESTSKU89012",
                "product_price": "$1234.56",
                "stock": [{
                    "color": "purple",
                    "quantity": 1
                }],
                "images": ["https://www.imageurl.jpeg"],
            },
        )
 def put(self, request, pk, format=None):
     cat = Product.objects.get(id=pk)
     serializer = ProductSerializer(cat, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 17
0
    def test_get_all_products(self):
        response = Client().get('/api/shop/products/')

        products = Product.objects.all()
        serializer = ProductSerializer(products, many=True)
        self.assertEqual(response.data, serializer.data)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Ejemplo n.º 18
0
 def put(self, request, id):
     product = self.get_product(id)
     serializer = ProductSerializer(instance=product, data=json.loads(request.body))
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 19
0
 def post(self, request):
     serializer = ProductSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response({'error': serializer.errors},
                     status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 20
0
def product(request, sku):
    try:
        curr_product = Product.objects.get(sku=sku)
    except Product.DoesNotExist:
        return Response({'error': 'Product does not exist'}, status=status.HTTP_404_NOT_FOUND)
    serializer = ProductSerializer(curr_product, many=False)
    return Response({'data': serializer.data})
Ejemplo n.º 21
0
def getProducts(request):
    shop = request.query_params.get('shop', None)
    keyword = request.query_params.get('keyword', None)
    if keyword:
        products = Product.objects.filter(name__icontains=keyword)
    elif shop:
        products = Product.objects.filter(shop=shop)
    else:
        products = Product.objects.all()

    page = request.query_params.get('page', None)
    paginator = Paginator(products, 4)

    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)

    if page is None:
        page = 1
    page = int(page)
    serializer = ProductSerializer(products, many=True)
    return Response({
        'products': serializer.data,
        'page': page,
        'pages': paginator.num_pages
    })
Ejemplo n.º 22
0
def getProducts(request):
    query = request.query_params.get('keyword')
    if query == None:
        query = ''

    products = Product.objects.filter(
        name__icontains=query).order_by('-createdAt')

    page = request.query_params.get('page')
    paginator = Paginator(products, 5)

    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)

    if page == None:
        page = 1

    page = int(page)
    print('Page:', page)
    serializer = ProductSerializer(products, many=True)
    return Response({'products': serializer.data, 'page': page, 'pages': paginator.num_pages})
 def get(self, request, format=None):
     cats = Product.objects.all()
     if request.query_params.get('title'):
         cats = cats.filter(
             title__contains=request.query_params.get('title'))
     serializer = ProductSerializer(cats, many=True)
     return Response(serializer.data)
Ejemplo n.º 24
0
def set_products(request):
    # dates = pd.read_csv('D:\Programming\PpP\web\cat.csv')
    dates = pd.read_csv(
        'https://docs.google.com/spreadsheets/d/e/2PACX-1vSgzUi6BNlGD2U6RmJcvT2kiszysNj9WISt746Jo67wtwD2DVJb-Iuwrkj6hL6bgDU1KotRaOS_IJL3/pub?gid=1763850928&single=true&output=csv'
    )

    name = dates['name'].values
    price = dates['price'].values
    description = dates['description'].values
    rating = [random.randint(1, 10) for i in range(len(name))]
    likes = dates['likes'].values
    views = dates['views'].values
    category_id = dates['category_id'].values

    for i in range(len(name)):
        di = {
            'name': name[i],
            'price': price[i],
            'description': description[i],
            'rating': rating[i],
            'likes': likes[i],
            'views': views[i],
            'category_id': category_id[i]
        }
        serializer = ProductSerializer(data=di)
        if serializer.is_valid():
            serializer.save()
            print('Good')
        else:
            print('Bad')
            return JsonResponse(serializer.errors)
    return JsonResponse({'Message': 'Good'})
Ejemplo n.º 25
0
def product_list(request):
    """
    List all code products, or create a new product.
    """
    if request.method == 'GET':
        products = Product.objects.all()
        serializer = ProductSerializer(products, many=True)
        return JSONResponse(serializer.data)

    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = ProductSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data, status=201)
        return JSONResponse(serializer.errors, status=400)
Ejemplo n.º 26
0
 def put(self, request, product_id):
     product = self.get_object(product_id)
     serializer = ProductSerializer(instance=product, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response({'error': serializer.errors})
Ejemplo n.º 27
0
def get_products(size=0):
    if size == 0:
        product_list = Product.objects.all()
    else:
        product_list = Product.objects.filter(size=size)
    serializer = ProductSerializer(product_list, many=True)
    return Response({'data': serializer.data})
Ejemplo n.º 28
0
 def get(self, request):
     try:
         products = Product.objects.all()
         serializer = ProductSerializer(products, many=True)
         return Response(serializer.data,  status=status.HTTP_200_OK)
     except:
         return Response({'ERROR!!': 'NO PRODUCTS FOUND'},  status=status.HTTP_404_NOT_FOUND)
Ejemplo n.º 29
0
 def put(self, request, product_id):
     product = self.get_object(product_id)
     serializer = ProductSerializer(instance=product, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_426_UPGRADE_REQUIRED)
     return Response({'error': serializer.errors}, status=status.HTTP_406_NOT_ACCEPTABLE)
Ejemplo n.º 30
0
def product_by_category(request, pk):
    try:
        category = Category.objects.get(id=pk)
    except Category.DoesNotExist as e:
        return Response({'error': str(e)})

    if request.method == 'GET':
        serializer = ProductSerializer(category.products.all(), many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response({'error': serializer.errors},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)