This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
2020-10-21 17:55:33 -04:00

46 lines
1.8 KiB
Python

import datetime
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, JsonResponse
from django.views import generic
from django.urls import reverse
from django.utils import timezone
from rest_framework import status, viewsets
from .serializers import MigrationSerializer
from rest_framework.response import Response
from rest_framework.decorators import action
from .models import Migration
class MigrationViewSet(viewsets.ModelViewSet):
queryset = Migration.objects.all()
serializer_class = MigrationSerializer
# permission_classes = (AllowAny,)
@action(detail=False, methods=['GET'])
def upcoming(self, request, *args, **kwargs):
queryset = MigrationSerializer(
Migration.objects.filter(booked_time=timezone.now(), migration_status="Booked"), many=True)
return Response(queryset.data, status=status.HTTP_200_OK)
@action(detail=False, methods=['GET'])
def missed(self, request, *args, **kwargs):
queryset = MigrationSerializer(
Migration.objects.filter(booked_time__gte=timezone.now() + datetime.timedelta(1), migration_status="Booked"), many=True)
return Response(queryset.data, status=status.HTTP_200_OK)
@action(detail=False, methods=['GET'])
def booked(self, request, *args, **kwargs):
queryset = MigrationSerializer(Migration.objects.filter(
migration_status="booked",), many=True)
return Response(queryset.data, status=status.HTTP_200_OK)
class IndexView(generic.ListView):
template_name = 'api/index.html'
context_object_name = 'latest_migrations'
def get_queryset(self):
"""Return the last five published questions (not including those set in the future)."""
return Migration.objects.filter(booked_time__gte=timezone.now()).order_by('-booked_time')[:5]