def todo_detail(request, pk): """ Get, udpate, or delete a specific task """ try: todo = Todo.objects.get(pk=pk) except Todo.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': serializer = TodoSerializer(todo) return Response(serializer.data) elif request.method == 'PUT': serializer = TodoSerializer(todo, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) else: return Response( serilizer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': todo.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def test_todo_object_bundle(self): response = self.client.get(self.url) self.assertEqual(200, response.status_code) todo_serializer_data = TodoSerializer(instance=self.todo).data response_data = json.loads(response.content) self.assertEqual(todo_serializer_data.get('title'), response_data.get('title'))
def put(self, request, pk, format=None): todo = self.get_todo(pk) serializer = TodoSerializer(todo, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=HTTP_200_OK) return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
def post(self, request): serializer = TodoSerializer(data=request.data) if serializer.is_valid(): serializer.save(owner=self.request.user) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class UserSerializer(serializers.ModelSerializer): # 사용자 1명에 대한 ser 이지만, 해당 user의 todos를 모두 내보낸다 todo_set = TodoSerializer(many=True) class Meta: model = User fields = ('id', 'username', 'todo_set')
class UserSerializer(serializers.ModelSerializer): todos = TodoSerializer(many=True, read_only=True) rooms = UserRoomSerializer(many=True, read_only=True) class Meta: model = User fields = ('id', 'username', 'nickname', 'todos', 'rooms')
def todo_list(request): """ List all tasks, or create a new task. """ if request.method == 'GET': todos = Todo.objects.all() serializer = TodoSerializer(todos, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = TodoSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response( serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def test_get_todo_by_id(self): test_id = self.first_todo.id response = self.client.get( reverse('todos:todo_by_id', kwargs={'todo_id': test_id})) todos = Todo.objects.filter(id=test_id) todo_serializer = TodoSerializer(todos, many=True) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(todo_serializer.data[0]['id'], response.data[0]['id'])
def todo_detail(request, todo_id): try: todo = Todo.objects.get(id=todo_id) except Todo.DoesNotExist: return JsonResponse({'message': 'The todo does not exist'}, status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': todo_serializer = TodoSerializer(todo) return JsonResponse(todo_serializer.data) if request.method == 'PUT': todo_data = JSONParser().parse(request) todo_serializer = TodoSerializer(todo, data=todo_data) if todo_serializer.is_valid(): todo_serializer.save() return JsonResponse(todo_serializer.data) return JsonResponse(todo_serializer.errors, status=status.HTTP_400_BAD_REQUEST) if request.method == 'DELETE': todo.delete() return JsonResponse({'message': 'Tutorial was deleted successfully!'}, status=status.HTTP_204_NO_CONTENT) return JsonResponse({'message': 'Unhandled Request'}, status=status.HTTP_400_BAD_REQUEST)
def todo_detail(request, pk): """ Get, udpate, or delete a specific task """ try: todo = Todo.objects.get(pk=pk) except Todo.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': serializer = TodoSerializer(todo) return Response(serializer.data) elif request.method == 'PUT': serializer = TodoSerializer(todo, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) else: return Response(serilizer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': todo.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def test_todo_object_bundle(self): """ Test to verify todo object bundle """ response = self.client.get(self.url) self.assertEqual(200, response.status_code) todo_serializer_data = TodoSerializer(instance=self.todo).data response_data = json.loads(response.content) self.assertEqual(todo_serializer_data, response_data)
class UserSerializer(serializers.ModelSerializer): # 사용자 한명에 대한 ser 이지만, 해당 user 의 Todos 를 모두 포함 todo_set = TodoSerializer(many=True) # 1:N 관계일때, 1에게 속한 모든 N을 가져온다. class Meta: model = User fields = ( 'id', 'username', 'todo_set', )
class UserSerializer(serializers.ModelSerializer): # 사용자 1명에 대한 serial이지만, 해당유저의 Todos를 모두 포함! todo_set = TodoSerializer(many=True) class Meta: model = User fields = ( 'id', 'username', 'todo_set', )
def todo_list(request): if request.method == 'GET': todos = Todo.objects.all() title = request.GET.get('title', None) if title is not None: todos = todos.filter(title__icontains=title) todos_serializer = TodoSerializer(todos, many=True) return JsonResponse(todos_serializer.data, safe=False) # 'safe=False' for objects serialization elif request.method == 'POST': todo_data = JSONParser().parse(request) todo_serializer = TodoSerializer(data=todo_data) if todo_serializer.is_valid(): todo_serializer.save() return JsonResponse(todo_serializer.data, status=status.HTTP_201_CREATED) return JsonResponse(todo_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': count = Todo.objects.all().delete() return JsonResponse( { 'message': '{} All Todo Items were deleted successfully!'.format(count[0]) }, status=status.HTTP_204_NO_CONTENT)
def todo_list(request): if request.method == 'GET': todos = Todo.objects.all() response_data = [] for todo in todos: ddl = (todo.deadline.astimezone(pytz.timezone('Asia/Taipei')) + timedelta(hours=8)).astimezone(pytz.timezone('Asia/Taipei')) ddl_string = ddl.strftime("%Y/%m/%d %H:%M") response_data.append( dict(id=str(todo.id), title=todo.title, ddl=ddl_string, status=getStatus(todo))) response_data.sort(key=getTimedeltaSec, reverse=True) return JsonResponse(response_data, safe=False) if request.method == 'POST': todo_data = JSONParser().parse(request) todo_serializer = TodoSerializer(data=todo_data) if todo_serializer.is_valid(): todo_serializer.save() return JsonResponse(todo_serializer.data, status=status.HTTP_201_CREATED) return JsonResponse(todo_serializer.errors, status=status.HTTP_400_BAD_REQUEST) if request.method == 'DELETE': count = Todo.objects.all().delete() return JsonResponse( {'message': '{} Todos were deleted successfully!'.format(count)}, status=status.HTTP_204_NO_CONTENT) return JsonResponse({'message': 'Unhandled Request'}, status=status.HTTP_400_BAD_REQUEST)
def working_to_complete(request, id): todo =Todo.objects.get(id=id) if todo.status == 'WR': todo.status = 'DN' todo.save() return Response('', status=status.HTTP_200_OK) else: Todo_serializer = TodoSerializer(todo, data=request.data) if Todo_serializer.is_valid(): Todo_serializer.save() return Response({"data": 'ID Updated successfully.'}, status=status.HTTP_200_OK) else: error_details = [] for key in Todo_serializer.errors.keys(): error_details.append({"field": key, "message": Todo_serializer.errors[key][0]}) data = { "Error": { "status": 400, "message": "Your submitted data was not valid - please correct the below errors", "error_details": error_details } } return Response(data, status=status.HTTP_400_BAD_REQUEST)
def create(self, request, **kwargs): serializer_data = request.data serializer_context = { 'include_details': True, 'description': request.data['description'] } serializer = TodoSerializer(data=serializer_data, context=serializer_context) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED)
def todo_list(request): """ List all todos, or create a new todo. """ if request.method == 'GET': todos = Todo.objects.all() serializer = TodoSerializer(todos, many=True) return JsonResponse(serializer.data, safe=False) elif request.method == 'POST': data = JSONParser().parse(request) serializer = TodoSerializer(data=data) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data, status=201) return JsonResponse(serializer.errors, status=400)
def test_get_single_todo(self): todo1 = Todo(name='todo1', user=self.user) todo1.save() todo2 = Todo(name='todo2', user=self.user) todo2.save() request = self.request_factory.get(reverse('todos:todo-detail', kwargs={'pk': 2}), format='json') force_authenticate(request, user=self.user) view = TodoDetail.as_view() response = view(request, pk=2) response.render() todo = Todo.objects.get(pk=2) serializer = TodoSerializer(todo, context={'request': request}) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, serializer.data)
def todo_list(request): """ List all tasks, or create a new task. """ if request.method == 'GET': todos = Todo.objects.all() serializer = TodoSerializer(todos, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = TodoSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def test_get_all_todos(self): todo1 = Todo(name='todo1', user=self.user) todo1.save() todo2 = Todo(name='todo2', user=self.user) todo2.save() request = self.request_factory.get(reverse('todos:todo-list'), format='json') force_authenticate(request, user=self.user) view = TodoList.as_view() response = view(request) response.render() todos = Todo.objects.all() serializer = TodoSerializer(todos, many=True, context={'request': request}) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, serializer.data)
def todo_detail(request, pk): """ Retrieve, update or delete a todo. """ try: todo = Todo.objects.get(pk=pk) except Todo.DoesNotExist: return HttpResponse(status=404) if request.method == 'GET': serializer = TodoSerializer(todo) return JsonResponse(serializer.data) elif request.method == "PUT": data = JSONParser().parse(request) serializer = TodoSerializer(todo, data=data) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) return JsonResponse(serializer.errors, status=400) elif requset.method == 'DELETE': todo.delete() return HttpResponse(status=204)
def get(self, request, format=None): todos = Todo.objects.filter(owner=request.user.pk) serializer = TodoSerializer(todos, many=True) return Response(serializer.data, status=HTTP_200_OK)
def get(self, request): todos = Todo.objects.filter(owner_id=self.request.user.id) serializer = TodoSerializer(todos, many=True) return Response(serializer.data)
def get(self, request): title = request.kwargs['title'] todo = Todo.objects.filter(title=title) serializer = TodoSerializer(todo, many=True) return Response(serializer.data, status=status.HTTP_200_OK)
def list(self, request): queryset = self.get_queryset() serializer = TodoSerializer(queryset, many=True) return Response(serializer.data)
def get_todos(self, obj): todos = Todo.objects.filter( Q(contributors__id=obj.id) | Q(owner_id=obj.id)) serializer = TodoSerializer(todos, many=True) return serializer.data
def test_get_all_todos(self): response = self.client.get(reverse('todos:get_all_todos')) todos = Todo.objects.all() todo_serializer = TodoSerializer(todos, many=True) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(todo_serializer.data[0]['id'], response.data[0]['id'])
class UserWithTodosSerializer(serializers.ModelSerializer): todos = TodoSerializer(many=True, read_only=True) class Meta: model = User fields = ['username', 'email', 'todos']
def get(self, request, format=None): user = request.user todos = Todo.objects.filter(owner=user) serializer = TodoSerializer(todos, many=True) return Response(serializer.data)
def todo_list_finished(request): todos = Todo.objects.filter(finished=True) if request.method == 'GET': todos_serializer = TodoSerializer(todos, many=True) return JsonResponse(todos_serializer.data, safe=False)
def get(self, request, pk, format=None): todo = self.get_object(pk) serializer = TodoSerializer(todo) return Response(serializer.data)