From 086ff471c9f8e54689aed9e4e88c082ae0190c7e Mon Sep 17 00:00:00 2001 From: pepper Date: Sun, 17 Jan 2021 23:24:56 -0500 Subject: [PATCH] Updated views for terminations --- migratorapi/api/admin.py | 4 ++-- migratorapi/api/serializers.py | 35 ++++++++++++++++++++++++---------- migratorapi/api/views.py | 33 +++++++++++++++++--------------- 3 files changed, 45 insertions(+), 27 deletions(-) diff --git a/migratorapi/api/admin.py b/migratorapi/api/admin.py index 6c6a966..6d93579 100644 --- a/migratorapi/api/admin.py +++ b/migratorapi/api/admin.py @@ -6,9 +6,9 @@ from .models import Migration class MigrationAdmin(admin.ModelAdmin): list_display = ('ticket_id', 'booked_date' , 'booked_time', - 'migration_status', 'domain', 'brand') + 'migration_status', 'domain', 'brand', 'agent_booked') search_fields = ['domain', 'booked_time', - 'username', 'ticket_id', 'migration_status'] + 'username', 'ticket_id', 'migration_status', 'agent_booked'] admin.site.register(Migration, MigrationAdmin) diff --git a/migratorapi/api/serializers.py b/migratorapi/api/serializers.py index d1e9dcc..505f337 100644 --- a/migratorapi/api/serializers.py +++ b/migratorapi/api/serializers.py @@ -1,15 +1,30 @@ from rest_framework import serializers from .models import Migration +import datetime -class MigrationOverView(serializers.ModelSerializer): - class Meta: - model = Migration - fields = ['id', - 'domain', - 'booked_date', - 'booked_time', - 'migration_status', - 'term_date'] +# class MigrationOverView(serializers.ModelSerializer): +# booked_count = serializers.SerializerMethodField() +# missed_count = serializers.SerializerMethodField() +# awaitterm_count = serializers.SerializerMethodField() +# complete_count = serializers.SerializerMethodField() +# class Meta: +# model = Migration +# fields = ['booked_count', +# 'missed_count', +# 'awaitterm_count', +# 'complete_count'] + +# def get_booked_count (self, obj): +# return Migration.objects.filter(migration_status="Booked").count() + +# def get_missed_count (self, obj): +# return Migration.objects.filter(migration_status="Booked", booked_date__lt=datetime.datetime.now().date()).count() + +# def get_awaitterm_count (self, obj): +# return Migration.objects.filter(migration_status="Waiting Termination", booked_date=datetime.datetime.now().date()).count() + +# def get_complete_count (self, obj): +# return Migration.objects.filter(migration_status="Completed").count() class MigrationSerializer(serializers.ModelSerializer): class Meta: @@ -31,4 +46,4 @@ class MigrationSerializer(serializers.ModelSerializer): 'migration_type', 'term_date', 'migration_cmd', - 'extra_scripts_run'] + 'extra_scripts_run'] \ No newline at end of file diff --git a/migratorapi/api/views.py b/migratorapi/api/views.py index 78e3d9f..5f4adb8 100644 --- a/migratorapi/api/views.py +++ b/migratorapi/api/views.py @@ -9,7 +9,7 @@ from rest_framework import status, viewsets from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.decorators import action -from .serializers import MigrationSerializer, MigrationOverView +from .serializers import MigrationSerializer from .models import Migration @@ -32,10 +32,15 @@ class MigrationList(APIView): Returns a list of migrations with simpleData ''' def get(self, request, format=None): - limit = checkLimit(request.GET.get('limit', '')) - migrations = getAllMigrations(limit) - serializer = MigrationOverView(migrations, many=True) - return Response(serializer.data) + return Response({'booked_count': Migration.objects.filter(migration_status="Booked").count(), + 'pendterm_count': Migration.objects.filter(migration_status="Waiting Termination", term_date=timezone.now()).count(), + 'complete_count': Migration.objects.filter(migration_status="Completed").count(), + 'missed_count': Migration.objects.filter( + booked_time__lte=timezone.now() + datetime.timedelta(-1), + migration_status="Booked" + ).count(), + "upcoming_count":Migration.objects.filter(migration_status="Booked", booked_date=datetime.datetime.now().date()).count()}) + # return Response(serializer.data) def post(self, request, format=None): serializer = MigrationSerializer(data=request.data) @@ -84,8 +89,8 @@ class MigrationsWaitingTerm(APIView): ''' def get(self, request, format=None): limit = checkLimit(request.GET.get('limit', '')) - migrations = MigrationOverView(Migration.objects.filter( - migration_status="Waiting Termination",)[:limit], many=True) + migrations = MigrationSerializer(Migration.objects.filter( + migration_status="Waiting Termination", term_date__lt=timezone.now() + datetime.timedelta(-1))[:limit], many=True) return Response(migrations.data, status=status.HTTP_200_OK) class MigrationsCompleted(APIView): @@ -94,7 +99,7 @@ class MigrationsCompleted(APIView): ''' def get(self, request, format=None): limit = checkLimit(request.GET.get('limit', '')) - migrations = MigrationOverView(Migration.objects.filter( + migrations = MigrationSerializer(Migration.objects.filter( migration_status="Completed",)[:limit], many=True) return Response(migrations.data, status=status.HTTP_200_OK) @@ -105,10 +110,9 @@ class PendingMigrations(APIView): def get(self, request, format=None): limit = checkLimit(request.GET.get('limit', '')) migrations = Migration.objects.filter( - migration_status="Booked", booked_time__lte=timezone.now() + datetime.timedelta(1), - booked_time__gte=(timezone.now() + datetime.timedelta(-1)) + migration_status="Booked", booked_date=datetime.datetime.now().date() )[:limit] - serializer = MigrationOverView(migrations, many=True) + serializer = MigrationSerializer(migrations, many=True) return Response(serializer.data, status=status.HTTP_200_OK) class MissedMigrations(APIView): @@ -121,7 +125,7 @@ class MissedMigrations(APIView): booked_time__lte=timezone.now() + datetime.timedelta(-1), migration_status="Booked" )[:limit] - serializer = MigrationOverView(migrations, many=True) + serializer = MigrationSerializer(migrations, many=True) return Response(serializer.data) class PendingTerm(APIView): @@ -131,9 +135,8 @@ class PendingTerm(APIView): def get(self, request, format=None): limit = checkLimit(request.GET.get('limit', '')) migrations = Migration.objects.filter( - migration_status="Waiting Termination", term_date__lte=timezone.now() + datetime.timedelta(1) - )[:limit] - serializer = MigrationOverView(migrations, many=True) + migration_status="Waiting Termination")[:limit] + serializer = MigrationSerializer(migrations, many=True) return Response(serializer.data) class MigrationListAll(APIView):