def contract_detail(request, contract_number, format=None): """ Add or Update a Contract. Path: /api/jobs/contracts/CONTRACT_NUMBER PUT PARAMETERS data = { "id": Contract ID, "applicationID": Application ID, "jobID": Job ID, "status": "Incomplete, Completed, or Terminated", "job_posterID": Job Poster ID, "job_poster_rating": Job Poster Rating, 'job_applicantID': Job Applicant ID, 'job_applicant_rating': Job Applicant Rating } """ try: contract = Contract.objects.get(id=contract_number) except: error_response = "Contract Does Not Exist" return Response(data=error_response, status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': contract = Contract.objects.filter(id=contract_number).values('id', 'applicationID', 'jobID', 'status', 'job_posterID', 'job_poster_rating', 'job_applicantID', 'job_applicant_rating') for user_contract in contract: try: job = Jobs.objects.filter(id=user_contract['jobID']).values('title') except: error_response = "Job does not exist." return Response(data=error_response, status=status.HTTP_404_NOT_FOUND) user_contract['job_title'] = job[0]['title'] return Response(contract) elif request.method == 'PUT': serializer = ContractSerializer(contract, data=request.data) if serializer.is_valid(): serializer.save() update_rating(request, contract) return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': contract = Contract.objects.get(id=contract_number) contract.status = "Terminated" contract.save() job = Jobs.objects.get(id=contract.jobID.id) job.status = "Active" job.save() application = Application.objects.get(id=contract.applicationID.id) application.status = "Terminated" application.save() message_response = "Contract: " + str(contract.id) + " has been terminated." return Response(data=message_response, status=status.HTTP_200_OK) error_response = "Method: " + request.method + " is wrong." return Response(data= error_response, status=status.HTTP_400_BAD_REQUEST)
def contract_list(request, format=None): """ List all Contracts, or create a new Contract. Path: /api/jobs/contracts POST PARAMETERS data = { "applicationID": "Application ID number", "jobID": "Job ID number", "status": "Incomplete or Completed", "job_posterID": "Job Poster ID number", "job_poster_rating": "Job Poster Rating", "job_applicantID": "Job Applicant ID number", "job_applicant_rating": "Job Applicant Rating", } """ if request.method == 'GET': contracts = Contract.objects.all() serializer = ContractSerializer(contracts, many=True) return Response(serializer.data) elif request.method == 'POST': print ("Data: " + str(request.data)) try: userID = request.data["userID"] user = UserProfile.objects.get(id=job_posterID) except: print ("Username is not in the system.") content = "Username is not in the system." Response(content, status=status.HTTP_400_BAD_REQUEST) try: serializer = ContractSerializer(data=request.data) except: print ("Data is wrong compared to Jobs Serializer.") content = "Data is wrong compared to Jobs Profile Serializer." return Response(content, status=status.HTTP_400_BAD_REQUEST) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_400_BAD_REQUEST)