From 3f5083f8e4a66c5905f64308d8f429639c3683e1 Mon Sep 17 00:00:00 2001 From: Aleksey Lobanov Date: Sat, 17 Apr 2021 15:00:04 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=BE=D0=B5=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Минимальное, но самодостаточное --- backend/backend/api.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/backend/backend/api.py b/backend/backend/api.py index 3239ffc..70a43fe 100644 --- a/backend/backend/api.py +++ b/backend/backend/api.py @@ -1,20 +1,50 @@ from rest_framework import viewsets, serializers, permissions from rest_framework import routers +from django_filters.rest_framework import DjangoFilterBackend -from .models import ToDoList +from .models import ToDoList, ToDoItem + + +class ToDoItemSerializer(serializers.HyperlinkedModelSerializer): + parent = serializers.PrimaryKeyRelatedField(many=False, read_only=True) + + class Meta: + model = ToDoItem + fields = ["id", "text", "finished", "created_at", "parent"] + + +class ToDoItemViewSet(viewsets.ModelViewSet): + serializer_class = ToDoItemSerializer + permission_classes = [permissions.IsAuthenticated] + filter_backends = [DjangoFilterBackend] + filterset_fields = ["parent", "finished"] + + def get_queryset(self): + user = self.request.user + if not user.is_authenticated: + # ветка только для генерации схемы + return ToDoItem.objects.all() + return ToDoItem.objects.filter(parent__user=user) class ToDoListSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = ToDoList - fields = ["title", "created_at"] + fields = ["id", "title", "created_at"] class ToDoListViewSet(viewsets.ModelViewSet): - queryset = ToDoList.objects.all() serializer_class = ToDoListSerializer permission_classes = [permissions.IsAuthenticated] + def get_queryset(self): + user = self.request.user + if not user.is_authenticated: + # ветка только для генерации схемы + return ToDoList.objects.all() + return ToDoList.objects.filter(user=user) + router = routers.DefaultRouter() -router.register(r"lists", ToDoListViewSet) +router.register(r"lists", ToDoListViewSet, basename="ToDoLists") +router.register(r"todo_items", ToDoItemViewSet, basename="ToDoItems")