def put(self, request, id, item_id, format=None):
        '''
        updates a bucketlist item and returns it
        ---
        serializer: bucketlist.serializers.BucketlistItemSerializer
        omit_serializer: false
        '''

        # get the bucketlist object the item belongs to
        bucketlist = self.get_object(id, request.user)

        # get the bucketlist item
        bucketlist_item = self.get_item(item_id, bucketlist)

        # set done
        if 'done' in request.data and request.data['done'].lower() == 'true':
            done = True
        else:
            done = False

        # update serializer
        serializer = BucketlistItemSerializer(bucketlist_item,
                                              data={'name': request.data['name'], 'done': done},
                                              partial=True)
        # validate serializer before saving
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def post(self, request, id, format=None):
        '''
        creates a bucketlist item
        ---
        serializer: bucketlist.serializers.BucketlistItemSerializer
        omit_serializer: false
        '''

        # get the instance of the bucketlist
        bucketlist = self.get_object(id, request.user)

        # create serializer
        serializer = BucketlistItemSerializer(data=request.data)

        # create bucketlist if data is valid
        if serializer.is_valid():
            serializer.save(bucketlist=bucketlist)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)