77from applications .globals .models import (Designation , ExtraInfo ,
88 HoldsDesignation )
99from rest_framework import viewsets
10- from applications .scholarships .api .serializers import PreviousWinnerSerializer ,AwardAndScholarshipSerializer ,McmSerializer ,NotionalPrizeSerializer ,DirectorGoldSerializer ,DirectorSilverSerializer ,ProficiencyDmSerializer ,ReleaseSerializer
10+ from applications .scholarships .api .serializers import PreviousWinnerSerializer ,AwardAndScholarshipSerializer ,McmSerializer ,NotionalPrizeSerializer ,DirectorGoldSerializer ,DirectorSilverSerializer ,ProficiencyDmSerializer ,ReleaseSerializer ,McmStatusUpdateSerializer ,DirectorSilverDecisionSerializer
11+ from django .shortcuts import get_object_or_404
1112
1213
1314class ReleaseCreateView (APIView ):
@@ -255,3 +256,123 @@ def post(self, request):
255256
256257 serializer = DirectorGoldSerializer (director_gold_entry )
257258 return Response (serializer .data , status = status .HTTP_200_OK )
259+
260+
261+ #This api for MCM status that is accept, reject and under review
262+
263+ class McmStatusUpdateView (APIView ):
264+ def post (self , request ):
265+ # Fetch the Mcm instance based on the provided primary key (pk)
266+ mcm_instance = get_object_or_404 (Mcm )
267+
268+ # Deserialize the input data with the existing object
269+ serializer = McmStatusUpdateSerializer (mcm_instance , data = request .data , partial = True )
270+
271+ # Validate the data
272+ if serializer .is_valid ():
273+ # Save the updated status
274+ serializer .save ()
275+ return Response ({"message" : "Status updated successfully" , "data" : serializer .data }, status = status .HTTP_200_OK )
276+
277+ # Return validation errors
278+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
279+
280+
281+
282+ #This api for Director silver accepting and rejecting the application by convenor and assistant
283+
284+ class DirectorSilverDecisionView (APIView ):
285+ def post (self , request ):
286+ # Deserialize the request data
287+ serializer = DirectorSilverDecisionSerializer (data = request .data )
288+
289+ if serializer .is_valid ():
290+ try :
291+ # Retrieve the Director_silver instance using the provided id
292+ director_silver = Director_silver .objects .get (id = request .data ['id' ])
293+
294+ # Update the status field
295+ director_silver .status = serializer .validated_data ['status' ]
296+ director_silver .save ()
297+
298+ return Response ({"message" : f"Application has been { director_silver .status .lower ()} ." },
299+ status = status .HTTP_200_OK )
300+
301+ except Director_silver .DoesNotExist :
302+ return Response ({"error" : "Director_silver entry not found." },
303+ status = status .HTTP_404_NOT_FOUND )
304+
305+ # If the data is invalid
306+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
307+
308+
309+
310+ ##This api for Director gold accepting and rejecting the application by convenor and assistant
311+
312+ class DirectorGoldAcceptRejectView (APIView ):
313+ def post (self , request ):
314+ # Get the ID of the Director_gold entry to update
315+ director_gold_id = request .data .get ('id' )
316+ action = request .data .get ('action' ) # 'accept' or 'reject'
317+
318+ # Check if the action is valid
319+ if action not in ['accept' , 'reject' ]:
320+ return Response ({'error' : 'Invalid action. Please choose either "accept" or "reject".' }, status = status .HTTP_400_BAD_REQUEST )
321+
322+ try :
323+ # Fetch the Director_gold entry from the database using the ID
324+ director_gold = Director_gold .objects .get (id = director_gold_id )
325+ except Director_gold .DoesNotExist :
326+ return Response ({'error' : 'Director_gold entry not found.' }, status = status .HTTP_404_NOT_FOUND )
327+
328+ # Update the status based on the action
329+ if action == 'accept' :
330+ director_gold .status = 'ACCEPTED'
331+ else :
332+ director_gold .status = 'REJECTED'
333+
334+ # Save the updated Director_gold entry
335+ director_gold .save ()
336+
337+ # Return the updated entry as a response
338+ serializer = DirectorGoldSerializer (director_gold )
339+ return Response (serializer .data , status = status .HTTP_200_OK )
340+
341+
342+ class DirectorSilverListView (APIView ):
343+ """
344+ API View to list all entries of the Director_silver model.
345+ """
346+ def get (self , request ):
347+ director_silver_entries = Director_silver .objects .all ()
348+ serializer = DirectorSilverSerializer (director_silver_entries , many = True )
349+ return Response (serializer .data , status = status .HTTP_200_OK )
350+
351+ class DirectorSilverAcceptRejectView (APIView ):
352+ def post (self , request ):
353+ # Get the ID of the Director_silver entry to update
354+ director_silver_id = request .data .get ('id' )
355+ action = request .data .get ('action' ) # 'accept' or 'reject'
356+
357+ # Check if the action is valid
358+ if action not in ['accept' , 'reject' ]:
359+ return Response ({'error' : 'Invalid action. Choose either "accept" or "reject".' }, status = status .HTTP_400_BAD_REQUEST )
360+
361+ try :
362+ # Fetch the Director_silver entry from the database using the ID
363+ director_silver = Director_silver .objects .get (id = director_silver_id )
364+ except Director_silver .DoesNotExist :
365+ return Response ({'error' : 'Director_silver entry not found.' }, status = status .HTTP_404_NOT_FOUND )
366+
367+ # Update the status based on the action
368+ if action == 'accept' :
369+ director_silver .status = 'ACCEPTED'
370+ else :
371+ director_silver .status = 'REJECTED'
372+
373+ # Save the updated Director_silver entry
374+ director_silver .save ()
375+
376+ # Return the updated entry as a response
377+ serializer = DirectorSilverSerializer (director_silver )
378+ return Response (serializer .data , status = status .HTTP_200_OK )
0 commit comments