Fixed Bugs

This commit is contained in:
Gowtham Sai 2021-12-17 19:23:32 +05:30
parent 364a66be30
commit d3183db59f
3 changed files with 29 additions and 26 deletions

View File

@ -1,10 +1,10 @@
import json
from datetime import datetime
from .utils import *
from rest_framework.decorators import api_view
import csv import csv
import json
from rest_framework.decorators import api_view
from .serializers import * from .serializers import *
from .utils import *
@api_view(['POST']) @api_view(['POST'])
@ -22,7 +22,8 @@ def markStatus(request, id, email, user_type):
application.selected = True if i[STUDENT_SELECTED] == "true" else False application.selected = True if i[STUDENT_SELECTED] == "true" else False
email = str(application.student.roll_no) + "@iitdh.ac.in" # Only allowing for IITDh emails email = str(application.student.roll_no) + "@iitdh.ac.in" # Only allowing for IITDh emails
subject = STUDENT_APPLICATION_STATUS_TEMPLATE_SUBJECT.format(company_name=application.placement.company_name, subject = STUDENT_APPLICATION_STATUS_TEMPLATE_SUBJECT.format(
company_name=application.placement.company_name,
id=application.id) id=application.id)
data = { data = {
"company_name": application.placement.company_name, "company_name": application.placement.company_name,
@ -53,15 +54,17 @@ def markStatus(request, id, email, user_type):
def getDashboard(request, id, email, user_type): def getDashboard(request, id, email, user_type):
try: try:
placements = Placement.objects.all().order_by('-created_at') placements = Placement.objects.all().order_by('-created_at')
ongoing = placements.filter(deadline_datetime__gt=datetime.now(), offer_accepted__isnull=False) ongoing = placements.filter(deadline_datetime__gt=datetime.datetime.now(), offer_accepted__isnull=False)
previous = placements.exclude(deadline_datetime__gt=datetime.now()).filter(offer_accepted__isnull=False) previous = placements.exclude(deadline_datetime__gt=datetime.datetime.now()).filter(
offer_accepted__isnull=False)
new = placements.filter(offer_accepted__isnull=True) new = placements.filter(offer_accepted__isnull=True)
ongoing = PlacementSerializerForAdmin(ongoing, many=True).data ongoing = PlacementSerializerForAdmin(ongoing, many=True).data
previous = PlacementSerializerForAdmin(previous, many=True).data previous = PlacementSerializerForAdmin(previous, many=True).data
new = PlacementSerializerForAdmin(new, many=True).data new = PlacementSerializerForAdmin(new, many=True).data
return Response( return Response(
{'action': "Get Dashboard - Admin", 'message': "Data Found", "ongoing": ongoing, "previous": previous, "new": new}, {'action': "Get Dashboard - Admin", 'message': "Data Found", "ongoing": ongoing, "previous": previous,
"new": new},
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
except Http404: except Http404:
return Response({'action': "Get Dashboard - Admin", 'message': 'Student Not Found'}, return Response({'action': "Get Dashboard - Admin", 'message': 'Student Not Found'},
@ -80,7 +83,7 @@ def updateDeadline(request, id, email, user_type):
data = request.data data = request.data
opening = get_object_or_404(Placement, pk=data[OPENING_ID]) opening = get_object_or_404(Placement, pk=data[OPENING_ID])
# Updating deadline date with correct format in datetime field # Updating deadline date with correct format in datetime field
opening.deadline_datetime = datetime.strptime(data[DEADLINE_DATETIME], '%Y-%m-%d %H:%M:%S %z') opening.deadline_datetime = datetime.datetime.strptime(data[DEADLINE_DATETIME], '%Y-%m-%d %H:%M:%S %z')
opening.save() opening.save()
return Response({'action': "Update Deadline", 'message': "Deadline Updated"}, return Response({'action': "Update Deadline", 'message': "Deadline Updated"},
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
@ -92,6 +95,7 @@ def updateDeadline(request, id, email, user_type):
return Response({'action': "Update Deadline", 'message': "Something went wrong"}, return Response({'action': "Update Deadline", 'message': "Something went wrong"},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST']) @api_view(['POST'])
@isAuthorized([ADMIN]) @isAuthorized([ADMIN])
@precheck([OPENING_ID, OFFER_ACCEPTED]) @precheck([OPENING_ID, OFFER_ACCEPTED])
@ -111,6 +115,7 @@ def updateOfferAccepted(request, id, email, user_type):
return Response({'action': "Update Offer Accepted", 'message': "Something went wrong"}, return Response({'action': "Update Offer Accepted", 'message': "Something went wrong"},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST']) @api_view(['POST'])
@isAuthorized([ADMIN]) @isAuthorized([ADMIN])
@precheck([OPENING_ID, EMAIL_VERIFIED]) @precheck([OPENING_ID, EMAIL_VERIFIED])
@ -130,6 +135,7 @@ def updateEmailVerified(request, id, email, user_type):
return Response({'action': "Update Email Verified", 'message': "Something went wrong"}, return Response({'action': "Update Email Verified", 'message': "Something went wrong"},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST']) @api_view(['POST'])
@isAuthorized([ADMIN]) @isAuthorized([ADMIN])
@precheck([OPENING_ID, ADDITIONAL_INFO]) @precheck([OPENING_ID, ADDITIONAL_INFO])
@ -167,7 +173,7 @@ def getApplications(request, id, email, user_type):
opening = get_object_or_404(Placement, pk=data[OPENING_ID]) opening = get_object_or_404(Placement, pk=data[OPENING_ID])
applications = PlacementApplication.objects.filter(placement=opening) applications = PlacementApplication.objects.filter(placement=opening)
serializer = PlacementApplicationSerializerForAdmin(applications, many=True) serializer = PlacementApplicationSerializerForAdmin(applications, many=True)
return Response({'action': "Get Applications", 'message': 'Data Found', 'applications':serializer.data}, return Response({'action': "Get Applications", 'message': 'Data Found', 'applications': serializer.data},
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
except Http404: except Http404:
return Response({'action': "Get Applications", 'message': 'Opening Not Found'}, return Response({'action': "Get Applications", 'message': 'Opening Not Found'},
@ -178,7 +184,6 @@ def getApplications(request, id, email, user_type):
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST']) @api_view(['POST'])
@isAuthorized(allowed_users=[ADMIN]) @isAuthorized(allowed_users=[ADMIN])
@precheck(required_data=[OPENING_TYPE, OPENING_ID, RESUME_FILE_NAME, @precheck(required_data=[OPENING_TYPE, OPENING_ID, RESUME_FILE_NAME,
@ -195,7 +200,7 @@ def submitApplication(request, id, email, user_type):
opening = get_object_or_404(Placement, id=data[OPENING_ID], opening = get_object_or_404(Placement, id=data[OPENING_ID],
allowed_batch__contains=[student.batch], allowed_batch__contains=[student.batch],
allowed_branch__contains=[student.branch], allowed_branch__contains=[student.branch],
deadline_datetime__gte=datetime.now().date() deadline_datetime__gte=datetime.datetime.now().date()
) )
if not opening.offer_accepted or not opening.email_verified: if not opening.offer_accepted or not opening.email_verified:
raise PermissionError("Placement Not Approved") raise PermissionError("Placement Not Approved")
@ -231,7 +236,7 @@ def submitApplication(request, id, email, user_type):
"additional_info": dict(json.loads(application.additional_info)), "additional_info": dict(json.loads(application.additional_info)),
} }
subject = STUDENT_APPLICATION_SUBMITTED_TEMPLATE_SUBJECT.format(company_name=opening.company_name) subject = STUDENT_APPLICATION_SUBMITTED_TEMPLATE_SUBJECT.format(company_name=opening.company_name)
student_email = str(student.roll_no)+"@iitdh.ac.in" student_email = str(student.roll_no) + "@iitdh.ac.in"
sendEmail(student_email, subject, data, STUDENT_APPLICATION_SUBMITTED_TEMPLATE) sendEmail(student_email, subject, data, STUDENT_APPLICATION_SUBMITTED_TEMPLATE)
application.save() application.save()
@ -252,7 +257,6 @@ def submitApplication(request, id, email, user_type):
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST']) @api_view(['POST'])
@isAuthorized(allowed_users=[ADMIN]) @isAuthorized(allowed_users=[ADMIN])
@precheck(required_data=[OPENING_ID]) @precheck(required_data=[OPENING_ID])
@ -272,12 +276,12 @@ def generateCSV(request, id, email, user_type):
header_row.extend(placement.additional_info) header_row.extend(placement.additional_info)
writer.writerow(header_row) writer.writerow(header_row)
for apl in applications: for apl in applications:
row_details=[] row_details = []
row_details.append(apl.applied_at) row_details.append(apl.applied_at)
row_details.append(apl.student.roll_no) row_details.append(apl.student.roll_no)
row_details.append(apl.student.name) row_details.append(apl.student.name)
row_details.append(str(apl.student.roll_no)+"@iitdh.ac.in") row_details.append(str(apl.student.roll_no) + "@iitdh.ac.in")
row_details.append(apl.student.phone_number) row_details.append(apl.student.phone_number)
row_details.append(apl.student.branch) row_details.append(apl.student.branch)
row_details.append(apl.student.batch) row_details.append(apl.student.batch)
@ -291,7 +295,7 @@ def generateCSV(request, id, email, user_type):
writer.writerow(row_details) writer.writerow(row_details)
f.close() f.close()
file_path = LINK_TO_APPLICATIONS_CSV + urllib.parse.quote_plus(filename+".csv") file_path = LINK_TO_APPLICATIONS_CSV + urllib.parse.quote_plus(filename + ".csv")
return Response({'action': "Create csv", 'message': "CSV created", 'file': file_path}, return Response({'action': "Create csv", 'message': "CSV created", 'file': file_path},
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
except: except:

View File

@ -1,5 +1,4 @@
import json import json
import datetime
from rest_framework.decorators import api_view from rest_framework.decorators import api_view
@ -178,7 +177,8 @@ def addPlacement(request):
else: else:
raise ValueError('Invalid compensation gross') raise ValueError('Invalid compensation gross')
# Convert to date object # Convert to date object
opening.tentative_date_of_joining = datetime.datetime.strptime(data[TENTATIVE_DATE_OF_JOINING], '%d-%m-%Y').date() opening.tentative_date_of_joining = datetime.datetime.strptime(data[TENTATIVE_DATE_OF_JOINING],
'%d-%m-%Y').date()
# Only Allowing Fourth Year for Placement # Only Allowing Fourth Year for Placement
opening.allowed_batch = [FOURTH_YEAR, ] opening.allowed_batch = [FOURTH_YEAR, ]
@ -202,8 +202,6 @@ def addPlacement(request):
opening.save() opening.save()
stat, link = generateOneTimeVerificationLink(opening.email, opening.id, "Placement") stat, link = generateOneTimeVerificationLink(opening.email, opening.id, "Placement")
if not stat: if not stat:
raise RuntimeError("Error in generating one time verification link for placement") raise RuntimeError("Error in generating one time verification link for placement")
@ -226,6 +224,7 @@ def addPlacement(request):
return Response({'action': "Add Placement", 'message': "Something went wrong"}, return Response({'action': "Add Placement", 'message': "Something went wrong"},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST']) @api_view(['POST'])
@precheck([TOKEN]) @precheck([TOKEN])
def verifyEmail(request): def verifyEmail(request):

View File

@ -5,10 +5,10 @@ import random
import re import re
import string import string
import sys import sys
import jwt
from os import path, remove from os import path, remove
import background_task import background_task
import jwt
from django.conf import settings from django.conf import settings
from django.core.mail import EmailMultiAlternatives from django.core.mail import EmailMultiAlternatives
from django.http import Http404 from django.http import Http404