Source code for events.api.calendarjs.views

from rest_framework.generics import ListAPIView
from rest_framework.permissions import IsAdminUser, IsAuthenticatedOrReadOnly

from events.api.calendarjs.serializers import (
    EventsCalenderJSSerializer,
    UnpublishedEventsCalenderJSSerializer,
)
from events.api.calendarjs.permissions import UnpublishedEventPermissions
from events.models import Event
from utils.snippets import extract_date_range


[docs]class CalendarJSEventListView(ListAPIView): """Define a custom route that outputs the correctly formatted events information for CalendarJS, published events only.""" serializer_class = EventsCalenderJSSerializer permission_classes = [IsAuthenticatedOrReadOnly] pagination_class = None
[docs] def get_serializer_context(self): context = super().get_serializer_context() context["member"] = self.request.member return context
[docs] def get_queryset(self): start, end = extract_date_range(self.request) return Event.objects.filter(end__gte=start, start__lte=end, published=True)
[docs]class CalendarJSUnpublishedEventListView(ListAPIView): """Define a custom route that outputs the correctly formatted events information for CalendarJS, unpublished events only.""" serializer_class = UnpublishedEventsCalenderJSSerializer permission_classes = [IsAdminUser, UnpublishedEventPermissions] pagination_class = None
[docs] def get_serializer_context(self): context = super().get_serializer_context() context["member"] = self.request.member return context
[docs] def get_queryset(self): start, end = extract_date_range(self.request) return Event.objects.filter(end__gte=start, start__lte=end, published=False)