from django.shortcuts import render, get_object_or_404, render_to_response, HttpResponseRedirect
from django.shortcuts import render, render_to_response
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework.decorators import parser_classes
from rest_framework.parsers import FormParser, MultiPartParser
from rest_framework.viewsets import ModelViewSet
from rest_framework.views import APIView
from django.views.decorators.csrf import csrf_exempt
from rest_framework import status
from employee.models import EmployeeResume
from employee.serializers import EmployeeResumeSerializer
from django.http import HttpResponse, Http404
from rest_framework.renderers import JSONRenderer
from rolepermissions.verifications import has_permission
from rest_framework.parsers import JSONParser
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
import json
# Create your views here.
class JSONResponse(HttpResponse):
"""
An HttpResponse that renders its content into JSON.
"""
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
def resume_list(request):
resumes = EmployeeResume.objects.all()
context = RequestContext(request)
ctx = {'resumes': resumes}
return render_to_response('employee/resume_list.html', ctx, context)
def resume_list_for_agency(request):
context = RequestContext(request)
return render_to_response('employee/resume_list_for_agency.html', context)
def resume_detail(request, pk):
context = RequestContext(request)
# ctx_photo = serializers.serialize('json', user_photo)
return render_to_response('employee/resume_detail.html', {'pk': pk}, context)
@login_required
def send_resume(request):
if has_permission(request.user, 'create_resume'):
context = RequestContext(request)
return render_to_response('employee/send_resume.html', {}, context)
else:
return HttpResponseRedirect('/1971/accounts/sign_up/')
@api_view(['POST', 'GET'])
def ResumeUpload(request):
if request.method == 'POST':
if has_permission(request.user, 'create_resume'):
user = request.user
serializer = EmployeeResumeSerializer(data=request.data)
if serializer.is_valid():
serializer.save(employee=user)
return JSONResponse(serializer.data, status=201)
return JSONResponse(serializer.errors, status=400)
else:
return HttpResponseRedirect('/1971/accounts/sign_up/')
@api_view(['POST', 'GET'])
def ResumeList(request):
if request.method == 'GET':
count = request.GET.get("count", None)
search = request.GET.get("search", None)
if search is None or search == "":
resumes = EmployeeResume.objects.all()
else:
resumes = EmployeeResume.objects.filter(employee_resuem__icontains=search)
if count is None:
serializer = PaginatedEmployeeResumeSerializer(resumes, request, 10)
else:
serializer = PaginatedEmployeeResumeSerializer(resumes, request, count)
return Response(serializer.data)
class PaginatedEmployeeResumeSerializer():
def __init__(self, resumes, request, num):
paginator = Paginator(resumes, num)
page = request.QUERY_PARAMS.get('page')
try:
resumes = paginator.page(page)
except PageNotAnInteger:
resumes = paginator.page(1)
except EmptyPage:
resumes = paginator.page(paginator.num_pages)
count = paginator.count
previous = None if not resumes.has_previous() else resumes.previous_page_number()
next = None if not resumes.has_next() else resumes.next_page_number()
serializer = EmployeeResumeSerializer(resumes, many=True)
self.data = {'count': count, 'previous': previous,
'next': next, 'resumes': serializer.data}
class ResumeDetail(APIView):
def get_object(self, pk):
try:
return EmployeeResume.objects.get(pk=pk)
except EmployeeResume.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
resume = self.get_object(pk)
serializer = EmployeeResumeSerializer(resume)
return Response(serializer.data)
def put(self, request, pk, format=None):
if has_permission(request.user, 'update_resume'):
resume = EmployeeResume.objects.get(pk=pk, created_by=request.user)
serializer = EmployeeResumeSerializer(resume, data=request.data)
if serializer.is_valid():
serializer.save()
return JSONResponse(serializer.data)
return JSONResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
else:
return HttpResponseRedirect('/1971/accounts/sign_up/')
def delete(self, request, pk, format=None):
if has_permission(request.user, 'delete_resume'):
resume = EmployeeResume.objects.get(pk=pk, created_by=request.user)
resume.delete()
return JSONResponse(status=status.HTTP_204_NO_CONTENT)
else:
return HttpResponseRedirect('/1971/accounts/sign_up/')
def get_resume_id(request):
try:
resume = EmployeeResume.objects.get(employee=request.user)
resume_id = resume.id
return HttpResponse(json.dumps({'resume_id': resume_id}), content_type="application/json")
except:
return HttpResponse(status=status.HTTP_204_NO_CONTENT)