Source code for announcements.api.v2.views
"""API v2 views of the announcements app."""
from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope
from rest_framework.generics import (
ListAPIView,
RetrieveAPIView,
)
from rest_framework.permissions import DjangoModelPermissionsOrAnonReadOnly
from announcements.api.v2.serializers import SlideSerializer, FrontpageArticleSerializer
from announcements.models import Slide, FrontpageArticle
[docs]class AnnouncementsAPIViewMixin:
permission_classes = [
IsAuthenticatedOrTokenHasScope,
DjangoModelPermissionsOrAnonReadOnly,
]
required_scopes = ["announcements:read"]
[docs]class SlideListView(AnnouncementsAPIViewMixin, ListAPIView):
"""Returns an overview of all slides that are currently active."""
serializer_class = SlideSerializer
queryset = Slide.visible_objects.order_by("order")
[docs]class SlideDetailView(AnnouncementsAPIViewMixin, RetrieveAPIView):
"""Returns details of a slide."""
serializer_class = SlideSerializer
queryset = Slide.visible_objects.order_by("order")
[docs]class FrontpageArticleListView(AnnouncementsAPIViewMixin, ListAPIView):
"""Returns an overview of all frontpage articles that are currently active."""
serializer_class = FrontpageArticleSerializer
queryset = FrontpageArticle.visible_objects.all()
[docs]class FrontpageArticleDetailView(AnnouncementsAPIViewMixin, RetrieveAPIView):
"""Returns details of a frontpage article."""
serializer_class = FrontpageArticleSerializer
queryset = FrontpageArticle.visible_objects.all()