Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)