def post(self, request, format=None):
        self.log(request)
        serializer = ToDoSerializer(data=request.data)

        if serializer.is_valid():
            todo = serializer.save(updated_by=request.user.pk)
            InMemoryStore.add(todo)
            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def get(self, request, format=None):
        self.log(request)
        todos = ToDoList()
        todos.items = InMemoryStore.list()
        serializer = ToDoListSerializer(todos)

        return Response(serializer.data)
 def get(self, request, pk, format=None):
     self.log(request)
     try:
         todo = InMemoryStore.get(int(pk))
         serializer = ToDoSerializer(todo)
         return Response(serializer.data)
     except IndexError:
         return Http404()
    def put(self, request, pk, format=None):
        self.log(request)
        todo = InMemoryStore.get(int(pk))
        serializer = ToDoSerializer(todo, data=request.data)

        if serializer.is_valid():
            serializer.save(updated_by=request.user.pk)
            return Response(serializer.data)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
 def delete(self, request, pk, format=None):
     self.log(request)
     InMemoryStore.delete(int(pk))
     return Response(status=status.HTTP_204_NO_CONTENT)