Added some endpoints for extra details

This commit is contained in:
Benjamyn 2020-11-03 11:11:57 +11:00
parent ad5dfa5af2
commit 070a647fdd
2 changed files with 69 additions and 2 deletions

View File

@ -7,5 +7,11 @@ from rest_framework import routers
urlpatterns = [
path('migrations/', views.MigrationList.as_view()),
path('migrations/<str:pk>/', views.MigrationDetails.as_view())
path('migrations/booked/', views.MigrationsBooked.as_view()),
path('migrations/waitingterm/', views.MigrationsWaitingTerm.as_view()),
path('migrations/completed/', views.MigrationsCompleted.as_view()),
path('migrations/pending/', views.PendingMigrations.as_view()),
path('migrations/missed/', views.MissedMigrations.as_view()),
path('migrations/pendingterm/', views.PendingTerm.as_view()),
path('migrations/<str:pk>/', views.MigrationDetails.as_view()),
]

View File

@ -38,7 +38,7 @@ class MigrationDetails(APIView):
try:
migration = Migration.objects.get(id=pk)
return migration
except Migrtation.DoesNotExist:
except Migration.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
@ -54,6 +54,67 @@ class MigrationDetails(APIView):
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class MigrationsBooked(APIView):
'''
Returns list of booked migrations
'''
def get(self, request, format=None):
migrations = MigrationOverView(Migration.objects.filter(
migration_status="Booked",), many=True)
return Response(migrations.data, status=status.HTTP_200_OK)
class MigrationsWaitingTerm(APIView):
'''
Returns list of booked migrations
'''
def get(self, request, format=None):
migrations = MigrationOverView(Migration.objects.filter(
migration_status="Waiting Termination",), many=True)
return Response(migrations.data, status=status.HTTP_200_OK)
class MigrationsCompleted(APIView):
'''
Returns list of booked migrations
'''
def get(self, request, format=None):
migrations = MigrationOverView(Migration.objects.filter(
migration_status="Completed",), many=True)
return Response(migrations.data, status=status.HTTP_200_OK)
class PendingMigrations(APIView):
'''
Returns list of 'pending' migrations (migrations that are booked for today (maybe before timezone.now))
'''
def get(self, request, format=None):
migrations = Migration.objects.filter(
migration_status="Booked", booked_time__lte=timezone.now() + datetime.timedelta(1),
booked_time__gte=(timezone.now() + datetime.timedelta(-1))
)
serializer = MigrationOverView(migrations, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
class MissedMigrations(APIView):
'''
Returns a list of missed migrations
'''
def get(self, request, format=None):
migrations = Migration.objects.filter(
booked_time__lte=timezone.now() + datetime.timedelta(-1),
migration_status="Booked"
)
serializer = MigrationOverView(migrations, many=True)
return Response(serializer.data)
class PendingTerm(APIView):
'''
Returns a list of accounts pending termination (might add an arg so we can specify how many days)
'''
def get(self, request, format=None):
migrations = Migration.objects.filter(
migration_status="Waiting Termination", term_date__lte=timezone.now() + datetime.timedelta(1)
)
serializer = MigrationOverView(migrations, many=True)
return Response(serializer.data)
# class MigrationViewSet(viewsets.ModelViewSet):
# ''' Class for defining the migration views '''