Skip to content

Commit 40a7e25

Browse files
committed
refactor: endpoint to create comment from quib
1 parent 0f70aef commit 40a7e25

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

backend/apps/quib/api/v1/viewsets.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
from rest_framework import viewsets
1+
from http import HTTPMethod
2+
3+
from django.shortcuts import get_object_or_404
4+
from rest_framework import response, status, viewsets
5+
from rest_framework.decorators import action
6+
7+
from apps.comment.api.v1.serializers import CommentSerializer
28

39
from ...models import QuibModel
410
from .serializers import QuibSerializer, QuibSlimSerializer
@@ -10,4 +16,19 @@ class QuibViewSet(viewsets.ModelViewSet):
1016
def get_serializer_class(self): # pyright: ignore
1117
if self.action == 'list':
1218
return QuibSlimSerializer
19+
# if custom action: 'comment'
20+
if self.action == 'comment':
21+
return CommentSerializer
1322
return QuibSerializer
23+
24+
@action(detail=True, methods=[HTTPMethod.POST])
25+
def comment(self, request, pk=None):
26+
quib_instance = get_object_or_404(QuibModel, pk=pk)
27+
28+
serializer = CommentSerializer(data=request.data)
29+
serializer.is_valid(raise_exception=True)
30+
31+
comment_instance = serializer.save()
32+
quib_instance.comments.add(comment_instance)
33+
34+
return response.Response(status=status.HTTP_201_CREATED, data=serializer.data)

0 commit comments

Comments
 (0)