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

Add comments api endpointc

parent b4c3c110
No related branches found
No related tags found
No related merge requests found
...@@ -81,7 +81,7 @@ class Activity(models.Model): ...@@ -81,7 +81,7 @@ class Activity(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
submission = models.ForeignKey('funds.ApplicationSubmission', related_name='activities', on_delete=models.CASCADE) submission = models.ForeignKey('funds.ApplicationSubmission', related_name='activities', on_delete=models.CASCADE)
message = models.TextField() message = models.TextField()
visibility = models.CharField(choices=VISIBILITY.items(), default=PUBLIC, max_length=10) visibility = models.CharField(choices=list(VISIBILITY.items()), default=PUBLIC, max_length=10)
# Fields for generic relations to other objects. related_object should implement `get_absolute_url` # Fields for generic relations to other objects. related_object should implement `get_absolute_url`
content_type = models.ForeignKey(ContentType, blank=True, null=True, on_delete=models.CASCADE) content_type = models.ForeignKey(ContentType, blank=True, null=True, on_delete=models.CASCADE)
......
...@@ -6,9 +6,11 @@ from django_filters import rest_framework as filters ...@@ -6,9 +6,11 @@ from django_filters import rest_framework as filters
from wagtail.core.models import Page from wagtail.core.models import Page
from opentech.api.pagination import StandardResultsSetPagination from opentech.api.pagination import StandardResultsSetPagination
from opentech.apply.activity.models import Activity
from .models import ApplicationSubmission from .models import ApplicationSubmission
from .models.applications import SubmittableStreamForm from .models.applications import SubmittableStreamForm
from .serializers import ( from .serializers import (
CommentSerializer,
RoundLabSerializer, RoundLabSerializer,
SubmissionListSerializer, SubmissionListSerializer,
SubmissionDetailSerializer, SubmissionDetailSerializer,
...@@ -62,3 +64,17 @@ class RoundLabDetail(generics.RetrieveAPIView): ...@@ -62,3 +64,17 @@ class RoundLabDetail(generics.RetrieveAPIView):
def get_object(self): def get_object(self):
return super().get_object().specific return super().get_object().specific
class CommentList(generics.ListAPIView):
queryset = Activity.comments.all()
serializer_class = CommentSerializer
permission_classes = (
permissions.IsAuthenticated, IsApplyStaffUser,
)
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('submission', 'visibility')
pagination_class = StandardResultsSetPagination
def get_queryset(self):
return super().get_queryset().visible_to(self.request.user)
from rest_framework import serializers from rest_framework import serializers
from wagtail.core.models import Page from wagtail.core.models import Page
from opentech.apply.activity.models import Activity
from .models import ApplicationSubmission from .models import ApplicationSubmission
...@@ -64,3 +65,11 @@ class RoundLabSerializer(serializers.ModelSerializer): ...@@ -64,3 +65,11 @@ class RoundLabSerializer(serializers.ModelSerializer):
} }
for phase in obj.workflow.values() for phase in obj.workflow.values()
] ]
class CommentSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField()
class Meta:
model = Activity
fields = ('id', 'timestamp', 'user', 'submission', 'message', 'visibility')
...@@ -11,6 +11,7 @@ from .views import ( ...@@ -11,6 +11,7 @@ from .views import (
SubmissionSealedView, SubmissionSealedView,
) )
from .api_views import ( from .api_views import (
CommentList,
RoundLabDetail, RoundLabDetail,
SubmissionList, SubmissionList,
SubmissionDetail, SubmissionDetail,
...@@ -46,7 +47,10 @@ api_urls = ([ ...@@ -46,7 +47,10 @@ api_urls = ([
], 'submissions'))), ], 'submissions'))),
path('rounds/', include(([ path('rounds/', include(([
path('<int:pk>/', RoundLabDetail.as_view(), name='detail'), path('<int:pk>/', RoundLabDetail.as_view(), name='detail'),
], 'rounds'))) ], 'rounds'))),
path('comments/', include(([
path('', CommentList.as_view(), name='list'),
], 'comments')))
], 'api') ], 'api')
rounds_urls = ([ rounds_urls = ([
......
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