def put(self, request, pk, format=None): item = self.get_object(pk) serializer = ItemsSerializer(item, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, pk=None): """ to update the specfic item """ queryset = Items.objects.get(pk=pk) serializer = ItemsSerializer(instance=queryset, data=request.data) if serializer.is_valid(): serializer.save() response = serializer.data if settings.DEBUG: response.update(image='http://localhost:8000' + response['image']) message = "updated Successfully! redirecting to details page" return Response( {'result': { 'item_detail': response, "message": message }}, status.HTTP_200_OK)
class TrxsReceiptReadSerializer(serializers.ModelSerializer): items = ItemsSerializer() class Meta: model = TrxsReceipt fields = ('id', 'items', 'quantity', 'trxs')
def create(self, request): """to add new item""" serializer = ItemsSerializer(data=request.data) if serializer.is_valid(): serializer.save() message = "Item Added successfully!" response = self.list_of_items() return Response( {"result": { "product_data": response, "message": message }}, 201) error_messages = "Either you have entered invalid input or Server is down!" return Response({"result": { 'message': error_messages }}, status.HTTP_201_CREATED)
class InventoriesReadSerializer(serializers.ModelSerializer): item = ItemsSerializer() store = StoresSerializer() class Meta: model = Inventories fields = ('id', 'store', 'item', 'quantity', 'updated')
def test_retrive_items_list(self): """ test retrieving the list of ingredients """ Items.objects.create(name="Green Tea", description="Refreshing and Healthy Tea", price=20, image=self.tem_img1) Items.objects.create(name="Egg Roll", description="Egg with roti and veggies", price=40, image=self.tem_img2) res = self.client.get(self.items_url) all_items = Items.objects.all().order_by('-added_date') serializer = ItemsSerializer(all_items, many=True) self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, {"result":{"product_data":serializer.data}})
def retrieve(self, request, pk=None): """ to retrieve specfic item """ queryset = Items.objects.all() item = get_object_or_404(queryset, pk=pk) serializer = ItemsSerializer(item) response = serializer.data if settings.DEBUG: response.update(image='http://localhost:8000' + response['image']) return Response({'result': { 'item_detail': response }}, status.HTTP_200_OK)
def test_retrive_one_items(self): """ retrieving the one of item from two """ item1 = Items.objects.create(name="Green Tea", description="Refreshing and Healthy Tea", price=20, image=self.tem_img1) item2 = Items.objects.create(name="Egg Roll", description="Egg with roti and veggies", price=40, image=self.tem_img2) pk = item1.id res = self.client.get(self.items_url+ f'{pk}/') queryset = Items.objects.all() item = get_object_or_404(queryset, pk=pk) serializer = ItemsSerializer(item) response = serializer.data self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, {"result":{"item_detail":response}})
def test_update_items(self): """ updating an item """ item = Items.objects.create(name="Green Tea", description="Refreshing and Healthy Tea", price=20, image=self.tem_img1) pk = item.id payload = {"name": "Coffee", "description":"Strong and refreshing", "price":25, "image":self.image1} res = self.client.put(self.items_url+ f'{pk}/', payload, format='multipart') queryset = Items.objects.all() item = get_object_or_404(queryset, pk=pk) serializer = ItemsSerializer(item) response = serializer.data message = "updated Successfully! redirecting to details page" self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, {"result":{"item_detail":response, "message": message}})
def list_of_items(): """ helper function to lists all the items args : None returns : list of dictionary of items """ queryset = Items.objects.filter( status='active').order_by('-added_date') serializer = ItemsSerializer(queryset, many=True) response = serializer.data if settings.DEBUG: for items_list in response: for k, v in items_list.items(): if k == 'image': items_list.update(image='http://localhost:8000' + v) break return response
def get(self, request, pk, format=None): item = self.get_object(pk) serializer = ItemsSerializer(item) return Response(serializer.data)
def post(self, request, format=None): serializer = ItemsSerializer(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)