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)
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)
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)
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)
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)
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)
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})
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)
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})
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})
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)
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 })
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)
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)
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)
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)
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})
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 })
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)
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'})
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)
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})
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})
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)
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)
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)