Add Board and ListBoard Viewset

This commit is contained in:
sosokker 2023-11-20 20:08:00 +07:00
parent 42acf6542e
commit e4742c8ea2
3 changed files with 52 additions and 5 deletions

View File

@ -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__'

View File

@ -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)),
]

View File

@ -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)