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