Skip to content
Snippets Groups Projects
Commit 850f3e17 authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Add the comment creation and listing on the submission

parent c96f3e3b
No related branches found
No related tags found
No related merge requests found
......@@ -8,11 +8,14 @@ from django_filters import rest_framework as filters
from wagtail.core.models import Page
from opentech.api.pagination import StandardResultsSetPagination
from opentech.apply.activity.models import Activity
from opentech.apply.activity.models import Activity, COMMENT
from opentech.apply.activity.messaging import messenger, MESSAGES
from .models import ApplicationSubmission
from .models.applications import SubmittableStreamForm
from .serializers import (
CommentSerializer,
CommentCreateSerializer,
RoundLabSerializer,
SubmissionActionSerializer,
SubmissionListSerializer,
......@@ -100,3 +103,33 @@ class CommentList(generics.ListAPIView):
def get_queryset(self):
return super().get_queryset().visible_to(self.request.user)
class CommentListCreate(generics.ListCreateAPIView):
queryset = Activity.comments.all()
serializer_class = CommentCreateSerializer
permission_classes = (
permissions.IsAuthenticated, IsApplyStaffUser,
)
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('visibility',)
pagination_class = StandardResultsSetPagination
def get_queryset(self):
return super().get_queryset().filter(
submission=self.kwargs['pk']
).visible_to(self.request.user)
def perform_create(self, serializer):
obj = serializer.save(
type=COMMENT,
user=self.request.user,
submission_id=self.kwargs['pk']
)
messenger(
MESSAGES.COMMENT,
request=self.request,
user=self.request.user,
submission=obj.submission,
related=obj,
)
......@@ -90,3 +90,11 @@ class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Activity
fields = ('id', 'timestamp', 'user', 'submission', 'message', 'visibility')
class CommentCreateSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField()
class Meta:
model = Activity
fields = ('id', 'timestamp', 'user', 'message', 'visibility')
......@@ -12,6 +12,7 @@ from .views import (
)
from .api_views import (
CommentList,
CommentListCreate,
RoundLabDetail,
SubmissionAction,
SubmissionList,
......@@ -46,6 +47,7 @@ api_urls = ([
path('', SubmissionList.as_view(), name='list'),
path('<int:pk>/', SubmissionDetail.as_view(), name='detail'),
path('<int:pk>/actions/', SubmissionAction.as_view(), name='actions'),
path('<int:pk>/comments/', CommentListCreate.as_view(), name='comments'),
], 'submissions'))),
path('rounds/', include(([
path('<int:pk>/', RoundLabDetail.as_view(), name='detail'),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment