def get(self, *args, **kwargs): product_id = kwargs.get('product_id') #product_id may not come in the kwargs if product_id: product = self._get_object(product_id) # got a product_id but we dont know what it is if not product: return JsonResponse( { "success": False, "msg": "Could not find product with id: {}".format(product_id) }, status=404) # got a product_id that we matched to a product. We put into json format with the serializer data = serialize_product_as_json(product) # we did not get a kwargs key for 'product_id'. we just got a GET request. # we are going to send back all the products that we have in a list of json objects. else: # list qs = Product.objects.all() # using the serializer for each product in our db. data = [serialize_product_as_json(product) for product in qs] return JsonResponse(data, status=200, safe=False)
def get(self, *args, **kwargs): data = None product_id = kwargs.get('product_id') if product_id: product = get_object_or_404(Product, id=product_id) data = serialize_product_as_json(product) else: products = get_list_or_404(Product) data = [serialize_product_as_json(product) for product in products] return JsonResponse(data, status=200, safe=False)
def get(self, *args, **kwargs): product_id = kwargs.get('product_id') if product_id: # detail product = self._get_object(product_id) if not product: return JsonResponse( {"success": False, "msg": "Could not find product with id: {}".format(product_id)}, status=404) data = serialize_product_as_json(product) else: # list qs = Product.objects.all() data = [serialize_product_as_json(product) for product in qs] return JsonResponse(data, status=200, safe=False)
def post(self, *args, **kwargs): data = json.loads(self.request.body) category_id = data.get('category', None) category = get_object_or_404(Category, id=category_id) product = Product.objects.create(name=data.get('name'), sku=data.get('sku'), category=category, description=data.get('description'), price=data.get('price')) data = serialize_product_as_json(product) return JsonResponse(data, status=201, safe=False)
def patch(self, *args, **kwargs): product = Product.objects.get(id=self.kwargs['prod_id']) if product: #get input payload try: payload = json.loads(self.request.body) except ValueError: return JsonResponse( { "success": False, "msg": "Provide a valid JSON payload" }, status=400) for field in [ 'name', 'category', 'sku', 'description', 'price', 'featured' ]: if field in payload: if field == 'category': try: payload['category'] = Category.objects.get( id=payload['category']) except Category.DoesNotExist: return JsonResponse( { "success": False, "msg": "Could not find planet with id: {}".format( payload['category']) }, status=404) try: setattr(product, field, payload[field]) product.save() except ValueError: return JsonResponse( { "success": False, "msg": "Provided payload is not valid" }, status=400) data = serialize_product_as_json(product) return JsonResponse(data, status=200, safe=False) else: return JsonResponse( { "success": False, "msg": "Could not find product with id: {}".format(product_id) }, status=404)
def get(self, *args, **kwargs): #Return the request object formatted into JSON id_passed = kwargs.get('prod_id') if id_passed: product = Product.objects.get(id=self.kwargs['prod_id']) if product: json_product = serialize_product_as_json(product) return JsonResponse(json_product) else: return JsonResponse( { "success": False, "msg": "Could not find product with id: {}".format(product) }, status=404) #Return all objects formatted into JSON else: products = Product.objects.all() product_list = [ serialize_product_as_json(product) for product in products ] return JsonResponse(product_list, safe=False)
def post(self, *args, **kwargs): # create if 'product_id' in kwargs: return JsonResponse( { "success": False, "msg": "Invalid HTTP method" }, status=400) try: payload = json.loads(self.request.body.decode('utf-8')) except ValueError: return JsonResponse( { "success": False, "msg": "Provide a valid JSON payload" }, status=400) # THIS BLOCK might need to be implemented to include a Category? # when creating a new procuct we need to know the category id to link it to an # existing category. If we don't get a category id we return an error message. category_id = payload.get('category', None) try: category = Category.objects.get(id=category_id) except Category.DoesNotExist: return JsonResponse( { "success": False, "msg": "Could not find category with id: {}".format(category_id) }, status=404) # THIS BLOCK try: product = Product.objects.create( name=payload['name'], sku=payload['sku'], category=category, description=payload['description'], price=payload['price']) except (ValueError, KeyError): return JsonResponse( { "success": False, "msg": "Provided payload is not valid" }, status=400) data = serialize_product_as_json(product) return JsonResponse(data, status=201, safe=False)
def post(self, *args, **kwargs): try: payload = json.loads(self.request.body) except ValueError: return JsonResponse({"success": False, "msg":"Provide a valid JSON payload"}, status=400) category_id = payload.get('category', None) try: category=Category.objects.get(id=category_id) except Category.DoesNotExist: return JsonResponse({"success": False, "msg":"that category ain't right"}, status=400) try: product=Product.objects.create(name=payload['name'],category=category,sku=payload['sku'],description=payload['description'], price=payload['price'],) except (ValueError, KeyError): return JsonResponse({"success": False, "msg": "Provided payload ain't right"},status=400) data = serialize_product_as_json(product) return JsonResponse(data, status=201, safe=False)
def post(self, *args, **kwargs): try: #payload = json.loads(self.request.body) payload = json.loads(self.request.body.decode('utf-8')) except ValueError: return JsonResponse( { "success": False, "msg": "Provide a valid JSON payload" }, status=400) # tries to find category in the JSON payload, if it doesn't exist it defaults to None category_id = payload.get('category', None) #CODE BELOW is getting the object by it's ID in the database (an int) #we're just assiging it to that Category model try: category = Category.objects.get(id=category_id) except Category.DoesNotExist: return JsonResponse( { "success": False, "msg": "Could not find category with id: {}".format(category_id) }, status=404) try: product = Product.objects.create( name=payload['name'], category=category, sku=payload['sku'], description=payload['description'], price=payload['price'], ) except (ValueError, KeyError): return JsonResponse( { "success": False, "msg": "Provided payload is not valid" }, status=400) data = serialize_product_as_json(product) return JsonResponse(data, status=201, safe=False)
def post(self, *args, **kwargs): #try to get json payload try: payload = json.loads(self.request.body) except ValueError: return JsonResponse( { "success": False, "msg": "Provide a valid JSON payload" }, status=400) try: category_id = payload.get('category', None) category = Category.objects.get(id=category_id) except Category.DoesNotExist: return JsonResponse( { "success": False, "msg": "Could not find category with id: {}".format(category) }, status=404) try: product = Product.objects.create( category=category, name=payload['name'], sku=payload['sku'], description=payload['description'], price=payload['price'], featured=payload.get('featured', False)) except (ValueError, KeyError): return JsonResponse( { "success": False, "msg": "Provided info isn't valid, please fill in all details" }, status=400) product.save() ret_prod = serialize_product_as_json(product) return JsonResponse(ret_prod, status=201)
def _update(self, product, payload, partial=False): for field in [ 'name', 'sku', 'category', 'description', 'price', 'featured' ]: if not field in payload: if partial: continue return JsonResponse( { "success": False, "msg": "Missing field in full update" }, status=400) # category if field == 'category': try: payload['category'] = Category.objects.get( id=payload['category']) except Category.DoesNotExist: return JsonResponse( { "success": False, "msg": "Could not find category with id: {}".format( category_id) }, status=404) try: #product is an instance of product set within the function# setattr(product, field, payload[field]) product.save() except ValueError: return JsonResponse( { "success": False, "msg": "Provided payload is not valid" }, status=400) data = serialize_product_as_json(product) return JsonResponse(data, status=200, safe=False)
def put(self, *args, **kwargs): product_id = kwargs.get('product_id') product = get_object_or_404(Product, id=product_id) data = json.loads(self.request.body) for field in [ 'name', 'category', 'sku', 'description', 'price', 'featured' ]: if not field in data: return JsonResponse({'success': False}, status=404) if field == 'category': data['category'] = get_object_or_404(Category, id=data.get('category')) setattr(product, field, data[field]) product.save() data = serialize_product_as_json(product) return JsonResponse(data, status=200, safe=False)