From 21bee24197bd39119219e828d96923bceb132c15 Mon Sep 17 00:00:00 2001 From: Gowtham Sai <66207607+gowtham3105@users.noreply.github.com> Date: Fri, 17 Dec 2021 23:59:19 +0530 Subject: [PATCH] Added AddPrePlacements API --- CDC_Backend/APIs/adminUrls.py | 2 ++ CDC_Backend/APIs/adminViews.py | 44 ++++++++++++++++++++++++++++++++++ CDC_Backend/APIs/models.py | 6 ++--- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/CDC_Backend/APIs/adminUrls.py b/CDC_Backend/APIs/adminUrls.py index bd3d6e5..98a5fa0 100644 --- a/CDC_Backend/APIs/adminUrls.py +++ b/CDC_Backend/APIs/adminUrls.py @@ -12,4 +12,6 @@ urlpatterns = [ path('getApplications/', adminViews.getApplications, name="Get Applications"), path("submitApplication/", adminViews.submitApplication, name="Submit Application"), path('generateCSV/', adminViews.generateCSV, name="Generate CSV"), + path('addPPO/', adminViews.addPPO, name="Add PPO"), + ] diff --git a/CDC_Backend/APIs/adminViews.py b/CDC_Backend/APIs/adminViews.py index 014d79c..19ab9af 100644 --- a/CDC_Backend/APIs/adminViews.py +++ b/CDC_Backend/APIs/adminViews.py @@ -303,3 +303,47 @@ def generateCSV(request, id, email, user_type): print(sys.exc_info()) return Response({'action': "Create csv", 'message': "Error Occurred"}, status=status.HTTP_400_BAD_REQUEST) + +@api_view(['POST']) +@isAuthorized(allowed_users=[ADMIN]) +@precheck(required_data=[STUDENT_ID, COMPANY_NAME,COMPENSATION_GROSS, COMPENSATION_DETAILS, DESIGNATION, OFFER_ACCEPTED]) +def addPPO(request, id, email, user_type): + try: + data = request.data + if data[STUDENT_ID].isdigit(): + student = get_object_or_404(Student, roll_no=int(data[STUDENT_ID])) + else: + raise ValueError("Student ID should be a number") + ppo = PrePlacementOffer() + ppo.student = student + ppo.company_name = data[COMPANY_NAME] + if data[COMPENSATION_GROSS].isdigit(): + ppo.compensation_gross = int(data[COMPENSATION_GROSS]) + else: + raise ValueError("Compensation Gross should be a number") + ppo.compensation_details = data[COMPENSATION_DETAILS] + ppo.designation = data[DESIGNATION] + print(data[OFFER_ACCEPTED], type(data[OFFER_ACCEPTED])) + if data[OFFER_ACCEPTED] == "true": + ppo.offer_accepted = True + elif data[OFFER_ACCEPTED] == "false": + ppo.offer_accepted = False + else: + ppo.offer_accepted = None + stat, tier = getTier(int(ppo.compensation_gross)) + if stat: + ppo.tier = tier + else: + raise Exception("Invalid Compensation") + ppo.save() + return Response({'action': "Add PPO", 'message': "PPO added"}, + status=status.HTTP_200_OK) + except Http404: + return Response({'action': "Add PPO", 'message': "Student not found"}, + status=status.HTTP_404_NOT_FOUND) + except: + logger.warning("Add PPO: " + str(sys.exc_info())) + return Response({'action': "Add PPO", 'message': "Something Went Wrong"}, + status=status.HTTP_400_BAD_REQUEST) + + diff --git a/CDC_Backend/APIs/models.py b/CDC_Backend/APIs/models.py index b5022b9..baaab5a 100644 --- a/CDC_Backend/APIs/models.py +++ b/CDC_Backend/APIs/models.py @@ -129,9 +129,9 @@ class PlacementApplication(models.Model): class PrePlacementOffer(models.Model): id = models.AutoField(primary_key=True) student = models.ForeignKey(Student, on_delete=models.CASCADE, blank=False) - company = models.CharField(max_length=50, blank=False, default="") - compensation = models.IntegerField(blank=False) # Job - Per Year + company_name = models.CharField(max_length=50, blank=False, default="") + compensation_gross = models.IntegerField(blank=False) # Job - Per Year compensation_details = models.CharField(blank=True, max_length=200) tier = models.CharField(blank=False, choices=TIERS, max_length=10) designation = models.CharField(blank=False, max_length=25, default=None, null=True) - accepted = models.BooleanField(default=None, null=True) + offer_accepted = models.BooleanField(default=None, null=True)