From e4742c8ea299b328db8b0f9b937b040a9f0a320c Mon Sep 17 00:00:00 2001 From: sosokker Date: Mon, 20 Nov 2023 20:08:00 +0700 Subject: [PATCH] Add Board and ListBoard Viewset --- backend/boards/serializers.py | 13 +++++++++++++ backend/boards/urls.py | 12 +++++++++--- backend/boards/views.py | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 backend/boards/serializers.py diff --git a/backend/boards/serializers.py b/backend/boards/serializers.py new file mode 100644 index 0000000..54c76ac --- /dev/null +++ b/backend/boards/serializers.py @@ -0,0 +1,13 @@ +from rest_framework import serializers + +from boards.models import Board, ListBoard + +class BoardSerializer(serializers.ModelSerializer): + class Meta: + model = Board + fields = '__all__' + +class ListBoardSerializer(serializers.ModelSerializer): + class Meta: + model = ListBoard + fields = '__all__' diff --git a/backend/boards/urls.py b/backend/boards/urls.py index d2d839f..b798e39 100644 --- a/backend/boards/urls.py +++ b/backend/boards/urls.py @@ -1,5 +1,11 @@ -from django.urls import path +from django.urls import path, include +from rest_framework.routers import DefaultRouter +from boards.views import BoardViewSet, ListBoardViewSet + +router = DefaultRouter() +router.register(r'boards', BoardViewSet, basename='board') +router.register(r'lists', ListBoardViewSet, basename='listboard') urlpatterns = [ - -] + path('', include(router.urls)), +] \ No newline at end of file diff --git a/backend/boards/views.py b/backend/boards/views.py index 91ea44a..1a3bd5a 100644 --- a/backend/boards/views.py +++ b/backend/boards/views.py @@ -1,3 +1,31 @@ -from django.shortcuts import render +from rest_framework import viewsets +from rest_framework.response import Response +from rest_framework import status -# Create your views here. +from boards.models import Board, ListBoard +from boards.serializers import BoardSerializer, ListBoardSerializer + +class BoardViewSet(viewsets.ModelViewSet): + queryset = Board.objects.all() + serializer_class = BoardSerializer + http_method_names = ['get'] + + def get_queryset(self): + queryset = Board.objects.filter(user_id=self.request.user.id) + return queryset + + +class ListBoardViewSet(viewsets.ModelViewSet): + serializer_class = ListBoardSerializer + + def get_queryset(self): + queryset = ListBoard.objects.filter(board__user_id=self.request.user.id) + return queryset + + def create(self, request, *args, **kwargs): + request.data['board'] = request.data.get('board') # Make sure 'board' is in request data + board_user_id = ListBoard.objects.get(id=request.data['board']).board.request.user.id + if request.user.id != board_user_id: + return Response({"error": "Cannot create ListBoard for another user's board."}, status=status.HTTP_403_FORBIDDEN) + return super().create(request, *args, **kwargs) +