diff --git a/migratorapi/api/urls.py b/migratorapi/api/urls.py index b78cb35..cfaa0d0 100644 --- a/migratorapi/api/urls.py +++ b/migratorapi/api/urls.py @@ -7,5 +7,11 @@ from rest_framework import routers urlpatterns = [ path('migrations/', views.MigrationList.as_view()), - path('migrations//', 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//', views.MigrationDetails.as_view()), ] diff --git a/migratorapi/api/views.py b/migratorapi/api/views.py index 9342cdc..995db41 100644 --- a/migratorapi/api/views.py +++ b/migratorapi/api/views.py @@ -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 '''