コード例 #1
0
ファイル: views.py プロジェクト: vlada5/opensource-job-portal
def hired_candidates(request, job_post_id):
    job_post = get_object_or_404(JobPost, id=job_post_id)
    agency_resumes = job_post.get_hired_applicants()
    no_of_jobs = len(agency_resumes)
    items_per_page = 10
    no_pages = int(math.ceil(float(len(agency_resumes)) / items_per_page))

    try:
        if int(request.GET.get('page')) > (no_pages + 2):
            return HttpResponseRedirect(reverse('jobs:index'))
        else:
            page = int(request.GET.get('page'))
    except:
        page = 1
    agency_resumes = agency_resumes[
        (page - 1) * items_per_page:page * items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)
    skills = Skill.objects.filter(status='Active')
    recruiters = User.objects.filter(company=request.user.company)
    years = YEARS
    return render(request, 'recruiter/company/jobs_hired_resumes.html', {'agency_resumes': agency_resumes,
                                                                         'recruiters': recruiters,
                                                                         'years': years,
                                                                         'skills': skills,
                                                                         'aft_page': aft_page,
                                                                         'after_page': after_page,
                                                                         'prev_page': prev_page,
                                                                         'previous_page': previous_page,
                                                                         'current_page': page,
                                                                         'last_page': no_pages,
                                                                         'no_of_jobs': no_of_jobs,
                                                                         })
コード例 #2
0
ファイル: views.py プロジェクト: vlada5/opensource-job-portal
def client_list(request):
    clients = AgencyCompany.objects.filter(company=request.user.company)
    if request.method == 'POST':
        if request.POST['search_text']:
            clients = clients.filter(Q(name__icontains=request.POST['search_text']) | Q(
                website__icontains=request.POST['search_text']))
        if request.POST['location']:
            branches = AgencyCompanyBranch.objects.filter(
                location_id=request.POST['location'])
            clients = clients.filter(branch_details__in=branches)
    if "page" in request.GET and int(request.GET.get('page')) > 0:
        page = int(request.GET.get('page'))
    else:
        page = 1
    items_per_page = 10
    cities = City.objects.filter(status='Enabled')
    no_pages = int(math.ceil(float(clients.count()) / items_per_page))
    clients = clients[(page - 1) * items_per_page:page * items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)
    return render(request, 'recruiter/company/client_list.html', {'clients': clients,
                                                                  'aft_page': aft_page,
                                                                  'after_page': after_page,
                                                                  'prev_page': prev_page,
                                                                  'previous_page': previous_page,
                                                                  'current_page': page, 'last_page': no_pages,
                                                                  'search_value': request.GET['search'] if 'search' in request.GET.keys() else '',
                                                                  'cities': cities})
コード例 #3
0
def jobs_list(request):
    if request.user.agency_admin:
        active_jobs_list = (JobPost.objects.filter(
            user__company=request.user.company).exclude(
                status__in=["Disabled", "Expired"]).prefetch_related(
                    "location", "agency_recruiters").annotate(
                        responses=Count("appliedjobs")).order_by("-id"))
    elif request.user.is_agency_recruiter:
        active_jobs_list = (JobPost.objects.filter(
            Q(agency_recruiters__in=[request.user])
            | Q(user=request.user)).exclude(
                status__in=["Disabled", "Expired"]).prefetch_related(
                    "location", "agency_recruiters").annotate(responses=Count(
                        "appliedjobs")).order_by("-id").distinct())
    else:
        active_jobs_list = (JobPost.objects.filter(user=request.user).exclude(
            status__in=["Disabled", "Expired"]).prefetch_related(
                "location", "agency_recruiters").annotate(
                    responses=Count("appliedjobs")).order_by("-id"))
    items_per_page = 10
    if request.POST.get("search_value"):
        if request.POST.get("search_value") == "all":
            pass
        else:
            active_jobs_list = active_jobs_list.filter(
                job_type__iexact=request.POST.get("search_value"))

    if "page" in request.POST and int(request.POST.get("page")) > 0:
        page = int(request.POST.get("page"))
    else:
        page = 1

    no_pages = int(math.ceil(float(active_jobs_list.count()) / items_per_page))
    active_jobs_list = active_jobs_list[(page - 1) * items_per_page:page *
                                        items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)
    response_data = {
        "jobs_list":
        JobPostSerializer(active_jobs_list, many=True).data,
        "aft_page":
        aft_page,
        "after_page":
        after_page,
        "prev_page":
        prev_page,
        "previous_page":
        previous_page,
        "current_page":
        page,
        "last_page":
        no_pages,
        "search_value":
        request.POST["search_value"]
        if "search_value" in request.POST else "All",
    }
    return JsonResponse(response_data, status=status.HTTP_200_OK)
コード例 #4
0
def sitemap(request, **kwargs):

    locations = (
        City.objects.annotate(num_posts=Count("locations"))
        .filter(status="Enabled", parent_city=None)
        .order_by("-num_posts")
    )
    skills = (
        Skill.objects.annotate(num_posts=Count("jobpost"))
        .filter(status="Active")
        .exclude(name="Fresher")
        .order_by("-num_posts")
    )
    full_jobposts = JobPost.objects.filter(status="Live", job_type="full-time")
    internships = JobPost.objects.filter(status="Live", job_type="internship")
    walk_ins = JobPost.objects.filter(status="Live", job_type="walk-in")
    government_jobs = JobPost.objects.filter(status="Live", job_type="government")
    states = State.objects.filter(status="Enabled").exclude(state__name__in=F("name"))
    jobposts = list(chain(full_jobposts, internships, walk_ins, government_jobs))
    no_pages = int(math.ceil(float(len(jobposts)) / 100))
    page = 1
    if kwargs:
        page = int(kwargs["page_num"])
        page = page if (page - 7) < no_pages else 1
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages
    )
    if page > 7:
        jobposts = jobposts[(page - 8) * 100 : (page - 7) * 100]
    else:
        jobposts = jobposts[(page - 1) * 100 : page * 100]
    template = "mobile/sitemap.html" if request.is_mobile else "sitemap.html"
    return render(
        request,
        template,
        {
            "jobposts": jobposts,
            "aft_page": aft_page,
            "after_page": after_page,
            "prev_page": prev_page,
            "previous_page": previous_page,
            "current_page": page,
            "last_page": no_pages,
            "states": states,
            "locations": locations,
            "educations": Qualification.objects.filter(status="Active"),
            "skills": skills,
        },
    )
コード例 #5
0
def inactive_jobs(request):
    inactive_jobs_list = JobPost.objects.filter(
        Q(user=request.user.id)
        & Q(status__in=["Disabled", "Expired"])).order_by("-id")
    inactive_jobs_list = inactive_jobs_list.filter(user=request.user)

    items_per_page = 10
    if request.POST.get("search_value"):
        if request.POST.get("search_value") == "all":
            pass
        else:
            inactive_jobs_list = inactive_jobs_list.filter(
                job_type__iexact=request.POST.get("search_value"))

    if "page" in request.POST and int(request.POST.get("page")) > 0:
        page = int(request.POST.get("page"))
    else:
        page = 1

    no_pages = int(
        math.ceil(float(inactive_jobs_list.count()) / items_per_page))
    inactive_jobs_list = inactive_jobs_list[(page - 1) * items_per_page:page *
                                            items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)

    return JsonResponse(
        {
            "jobs_list":
            JobPostSerializer(inactive_jobs_list, many=True).data,
            "aft_page":
            aft_page,
            "after_page":
            after_page,
            "prev_page":
            prev_page,
            "previous_page":
            previous_page,
            "current_page":
            page,
            "last_page":
            no_pages,
            "search_value":
            request.POST["search_value"]
            if "search_value" in request.POST.keys() else "All",
        }, )
コード例 #6
0
ファイル: views.py プロジェクト: vlada5/opensource-job-portal
def sitemap(request, **kwargs):

    locations = City.objects.annotate(num_posts=Count('locations')).filter(
        status='Enabled', parent_city=None).order_by('-num_posts')
    skills = Skill.objects.annotate(num_posts=Count('jobpost')).filter(
        status='Active').exclude(name='Fresher').order_by('-num_posts')
    full_jobposts = JobPost.objects.filter(status='Live', job_type='full-time')
    internships = JobPost.objects.filter(status='Live', job_type='internship')
    walk_ins = JobPost.objects.filter(status='Live', job_type='walk-in')
    government_jobs = JobPost.objects.filter(status='Live',
                                             job_type='government')
    states = State.objects.filter(status='Enabled').exclude(
        state__name__in=F('name'))
    jobposts = list(
        chain(full_jobposts, internships, walk_ins, government_jobs))
    no_pages = int(math.ceil(float(len(jobposts)) / 100))
    page = 1
    if kwargs:
        page = int(kwargs['page_num'])
        page = page if (page - 7) < no_pages else 1
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)
    if page > 7:
        jobposts = jobposts[(page - 8) * 100:(page - 7) * 100]
    else:
        jobposts = jobposts[(page - 1) * 100:page * 100]
    template = 'mobile/sitemap.html' if request.is_mobile else 'sitemap.html'
    return render(
        request, template, {
            'jobposts': jobposts,
            'aft_page': aft_page,
            'after_page': after_page,
            'prev_page': prev_page,
            'previous_page': previous_page,
            'current_page': page,
            'last_page': no_pages,
            'states': states,
            'locations': locations,
            'educations': Qualification.objects.filter(status='Active'),
            'skills': skills
        })
コード例 #7
0
ファイル: views.py プロジェクト: vlada5/opensource-job-portal
def dashboard(request):
    if request.user.is_agency_admin:
        job_posts = JobPost.objects.filter(user__company=request.user.company)
    else:
        job_posts = JobPost.objects.filter(
            agency_recruiters__in=[request.user])
    if request.user.is_agency_admin:
        agency_resumes = AgencyResume.objects.filter(
            uploaded_by__company=request.user.company)
    else:
        agency_resumes = AgencyResume.objects.filter(uploaded_by=request.user)
    no_of_jobs = len(job_posts)
    items_per_page = 10
    no_pages = int(math.ceil(float(len(job_posts)) / items_per_page))

    try:
        if int(request.GET.get('page')) > (no_pages + 2):
            page = 1
            return HttpResponseRedirect(reverse('jobs:index'))
        else:
            page = int(request.GET.get('page'))
    except:
        page = 1
    job_posts = job_posts[(page - 1) * items_per_page:page * items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)

    return render(request, 'recruiter/company/dashboard.html', {'agency_resumes': agency_resumes,
                                                                'aft_page': aft_page,
                                                                'after_page': after_page,
                                                                'prev_page': prev_page,
                                                                'previous_page': previous_page,
                                                                'current_page': page,
                                                                'last_page': no_pages,
                                                                'no_of_jobs': no_of_jobs,
                                                                'job_posts': job_posts
                                                                })
コード例 #8
0
def custom_search(data, request):
    form = job_searchForm(data)
    searched_locations = searched_skills = searched_edu = searched_industry = searched_states = ''
    if request.POST.get('refine_search') == 'True':
        jobs_list, searched_skills, searched_locations, searched_industry, searched_edu, searched_states = refined_search(
            request.POST)
    else:
        jobs_list = form.search()
        jobs_list = JobPost.objects.filter(pk__in=[r.pk for r in jobs_list])
        searched_locations = City.objects.filter(name__in=data.get('location'))
        searched_skills = Skill.objects.filter(name__in=data.get('q'))
    jobs_list = jobs_list.filter(status="Live")
    job_type = data.get('job_type') or request.POST.get(
        'job_type') or request.GET.get('job_type')
    if job_type:
        jobs_list = jobs_list.filter(job_type=job_type)
    if data.get('walk-in'):
        jobs_list = jobs_list.filter(job_type="walk-in")

    no_of_jobs = len(jobs_list)
    items_per_page = 20
    no_pages = int(math.ceil(float(jobs_list.count()) / items_per_page))
    page = request.POST.get('page') or data.get('page')
    if page and bool(re.search(r"[0-9]", page)) and int(page) > 0:
        if int(page) > (no_pages + 2):
            page = 1
        else:
            page = int(data.get('page'))
    else:
        page = 1
    jobs_list = jobs_list.select_related('company', 'user').prefetch_related(
        'location', 'skills', 'industry').distinct()

    jobs_list = jobs_list[(page - 1) * items_per_page:page * items_per_page]

    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)

    if form.is_valid():
        context = {
            'results': form.search(),
            'query': form.query(),
            'searchform': form,
            'aft_page': aft_page,
            'after_page': after_page,
            'prev_page': prev_page,
            'previous_page': previous_page,
            'current_page': page,
            'last_page': no_pages,
            'no_of_jobs': no_of_jobs,
            'job_list': jobs_list,
            'skill': form.cleaned_data['q'],
            'location': form.cleaned_data['location'],
            'searched_skills': searched_skills,
            'searched_locations': searched_locations,
            'searched_industry': searched_industry,
            'searched_edu': searched_edu,
            'searched_experience': request.POST.get('experience'),
            'searched_job_type': request.POST.get('job_type'),
            'searched_functional_area': request.POST.get('functional_area'),
        }
        return context
    return {'job_list': []}
コード例 #9
0
def custom_walkins(request, skill_name, city_name, **kwargs):
    current_url = reverse('custom_walkins',
                          kwargs={
                              'skill_name': skill_name,
                              'city_name': city_name
                          })
    if kwargs.get('page_num') == '1' or request.GET.get('page') == '1':
        return redirect(current_url, permanent=True)
    if 'page' in request.GET:
        url = current_url + request.GET.get('page') + '/'
        return redirect(url, permanent=True)
    final_skill = get_valid_skills_list(skill_name)
    final_location = get_valid_locations_list(city_name)
    if not final_location or not final_skill:
        if request.POST:
            save_search_results.delay(request.META['REMOTE_ADDR'],
                                      request.POST, 0, request.user.id)
        location = final_location or [city_name]
        skills = final_skill or [skill_name]
        template = 'mobile/404.html' if request.is_mobile else '404.html'
        meta_title = meta_description = ''
        return render(
            request,
            template, {
                'message':
                'Unfortunately, we are unable to locate the jobs you are looking for',
                'searched_job_type': 'walk-in',
                'reason':
                "Only Valid Skills/Cities names are accepted in search",
                'searched_skills': skills,
                'searched_locations': location,
                'meta_title': meta_title,
                'meta_description': meta_description,
                'data_empty': True,
                'job_search': True
            },
            status=404)
    if request.POST.get('refine_search') == 'True':
        job_list, searched_skills, searched_locations, searched_industry, searched_edu, searched_states = refined_search(
            request.POST)
    else:
        search_dict = QueryDict('', mutable=True)
        search_dict.setlist('refine_skill', final_skill)
        search_dict.setlist('refine_location', final_location)
        search_dict.update({'job_type': 'walk-in'})
        if request.POST.get('experience'):
            search_dict.update(
                {'refine_experience_min': request.POST.get('experience')})
        job_list, searched_skills, searched_locations, searched_industry, searched_edu, searched_states = refined_search(
            search_dict)
    if job_list:
        no_of_jobs = job_list.count()
        items_per_page = 20
        no_pages = int(math.ceil(float(no_of_jobs) / items_per_page))
        page = get_page_number(request, kwargs, no_pages)
        if not page:
            return HttpResponseRedirect(current_url)
        prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
            page, no_pages)
        job_list = job_list[(page - 1) * items_per_page:page * items_per_page]
        meta_title, meta_description, h1_tag = get_meta_data(
            'skill_location_walkin_jobs', {
                'skills': searched_skills,
                'final_skill': final_skill,
                'page': page,
                'locations': searched_locations,
                'final_location': final_location
            })
        data = {
            'job_list': job_list,
            'aft_page': aft_page,
            'after_page': after_page,
            'prev_page': prev_page,
            'previous_page': previous_page,
            'current_page': page,
            'last_page': no_pages,
            'no_of_jobs': no_of_jobs,
            "is_job_list": False,
            'current_url': current_url,
            'searched_skills': searched_skills,
            'searched_states': searched_states,
            'searched_locations': searched_locations,
            'searched_industry': searched_industry,
            'searched_edu': searched_edu,
            'searched_experience': request.POST.get('experience'),
            'searched_job_type': 'walk-in',
            'meta_title': meta_title,
            'meta_description': meta_description,
            'h1_tag': h1_tag,
            'walkin': True
        }
        template = 'jobs/jobs_list.html'
        if request.is_mobile:
            data.update({
                'searched_industry':
                request.POST.get('industry'),
                'searched_functional_area':
                request.POST.get('functional_area')
            })
            template = 'mobile/jobs/list.html'
        return render(request, template, data)
    else:
        template = 'mobile/404.html' if request.is_mobile else '404.html'
        meta_title, meta_description = get_404_meta('skill_location_404', {
            'skill': final_skill,
            'city': final_location
        })
        return render(
            request, template, {
                'message':
                'Unfortunately, we are unable to locate the jobs you are looking for',
                'reason':
                "Only Valid Skills/Cities names are accepted in search",
                'job_search': True,
                'searched_skills': searched_skills,
                'searched_locations': searched_locations,
                'meta_title': meta_title,
                'meta_description': meta_description
            })
コード例 #10
0
ファイル: views.py プロジェクト: apollo1130/Job_Portal_Django
def custom_search(data, request):
    form = job_searchForm(data)
    searched_locations = (
        searched_skills
    ) = searched_edu = searched_industry = searched_states = ""
    if request.POST.get("refine_search") == "True":
        (
            jobs_list,
            searched_skills,
            searched_locations,
            searched_industry,
            searched_edu,
            searched_states,
        ) = refined_search(request.POST)
    else:
        jobs_list = form.search()
        jobs_list = JobPost.objects.filter(pk__in=[r.pk for r in jobs_list])
        searched_locations = City.objects.filter(name__in=data.get("location"))
        searched_skills = Skill.objects.filter(name__in=data.get("q"))
    jobs_list = jobs_list.filter(status="Live")
    job_type = (data.get("job_type") or request.POST.get("job_type")
                or request.GET.get("job_type"))
    if job_type:
        jobs_list = jobs_list.filter(job_type=job_type)
    if data.get("walk-in"):
        jobs_list = jobs_list.filter(job_type="walk-in")

    no_of_jobs = len(jobs_list)
    items_per_page = 20
    no_pages = int(math.ceil(float(jobs_list.count()) / items_per_page))
    page = request.POST.get("page") or data.get("page")
    if page and bool(re.search(r"[0-9]", page)) and int(page) > 0:
        if int(page) > (no_pages + 2):
            page = 1
        else:
            page = int(data.get("page"))
    else:
        page = 1
    jobs_list = (jobs_list.select_related("company", "user").prefetch_related(
        "location", "skills", "industry").distinct())

    jobs_list = jobs_list[(page - 1) * items_per_page:page * items_per_page]

    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)

    if form.is_valid():
        context = {
            "results": form.search(),
            "query": form.query(),
            "searchform": form,
            "aft_page": aft_page,
            "after_page": after_page,
            "prev_page": prev_page,
            "previous_page": previous_page,
            "current_page": page,
            "last_page": no_pages,
            "no_of_jobs": no_of_jobs,
            "job_list": jobs_list,
            "skill": form.cleaned_data["q"],
            "location": form.cleaned_data["location"],
            "searched_skills": searched_skills,
            "searched_locations": searched_locations,
            "searched_industry": searched_industry,
            "searched_edu": searched_edu,
            "searched_experience": request.POST.get("experience"),
            "searched_job_type": request.POST.get("job_type"),
            "searched_functional_area": request.POST.get("functional_area"),
        }
        return context
    return {"job_list": []}
コード例 #11
0
ファイル: views.py プロジェクト: apollo1130/Job_Portal_Django
def custom_walkins(request, skill_name, city_name, **kwargs):
    current_url = reverse("custom_walkins",
                          kwargs={
                              "skill_name": skill_name,
                              "city_name": city_name
                          })
    if kwargs.get("page_num") == "1" or request.GET.get("page") == "1":
        return redirect(current_url, permanent=True)
    if "page" in request.GET:
        url = current_url + request.GET.get("page") + "/"
        return redirect(url, permanent=True)
    final_skill = get_valid_skills_list(skill_name)
    final_location = get_valid_locations_list(city_name)
    if not final_location or not final_skill:
        if request.POST:
            save_search_results.delay(request.META["REMOTE_ADDR"],
                                      request.POST, 0, request.user.id)
        location = final_location or [city_name]
        skills = final_skill or [skill_name]
        template = "mobile/404.html" if request.is_mobile else "404.html"
        meta_title = meta_description = ""
        return render(
            request,
            template,
            {
                "message":
                "Unfortunately, we are unable to locate the jobs you are looking for",
                "searched_job_type": "walk-in",
                "reason":
                "Only Valid Skills/Cities names are accepted in search",
                "searched_skills": skills,
                "searched_locations": location,
                "meta_title": meta_title,
                "meta_description": meta_description,
                "data_empty": True,
                "job_search": True,
            },
            status=404,
        )
    if request.POST.get("refine_search") == "True":
        (
            job_list,
            searched_skills,
            searched_locations,
            searched_industry,
            searched_edu,
            searched_states,
        ) = refined_search(request.POST)
    else:
        search_dict = QueryDict("", mutable=True)
        search_dict.setlist("refine_skill", final_skill)
        search_dict.setlist("refine_location", final_location)
        search_dict.update({"job_type": "walk-in"})
        if request.POST.get("experience"):
            search_dict.update(
                {"refine_experience_min": request.POST.get("experience")})
        (
            job_list,
            searched_skills,
            searched_locations,
            searched_industry,
            searched_edu,
            searched_states,
        ) = refined_search(search_dict)
    if job_list:
        no_of_jobs = job_list.count()
        items_per_page = 20
        no_pages = int(math.ceil(float(no_of_jobs) / items_per_page))
        page = get_page_number(request, kwargs, no_pages)
        if not page:
            return HttpResponseRedirect(current_url)
        prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
            page, no_pages)
        job_list = job_list[(page - 1) * items_per_page:page * items_per_page]
        meta_title, meta_description, h1_tag = get_meta_data(
            "skill_location_walkin_jobs",
            {
                "skills": searched_skills,
                "final_skill": final_skill,
                "page": page,
                "locations": searched_locations,
                "final_location": final_location,
            },
        )
        data = {
            "job_list": job_list,
            "aft_page": aft_page,
            "after_page": after_page,
            "prev_page": prev_page,
            "previous_page": previous_page,
            "current_page": page,
            "last_page": no_pages,
            "no_of_jobs": no_of_jobs,
            "is_job_list": False,
            "current_url": current_url,
            "searched_skills": searched_skills,
            "searched_states": searched_states,
            "searched_locations": searched_locations,
            "searched_industry": searched_industry,
            "searched_edu": searched_edu,
            "searched_experience": request.POST.get("experience"),
            "searched_job_type": "walk-in",
            "meta_title": meta_title,
            "meta_description": meta_description,
            "h1_tag": h1_tag,
            "walkin": True,
        }
        template = "jobs/jobs_list.html"
        if request.is_mobile:
            data.update({
                "searched_industry":
                request.POST.get("industry"),
                "searched_functional_area":
                request.POST.get("functional_area"),
            })
            template = "mobile/jobs/list.html"
        return render(request, template, data)
    else:
        template = "mobile/404.html" if request.is_mobile else "404.html"
        meta_title, meta_description = get_404_meta("skill_location_404", {
            "skill": final_skill,
            "city": final_location
        })
        return render(
            request,
            template,
            {
                "message":
                "Unfortunately, we are unable to locate the jobs you are looking for",
                "reason":
                "Only Valid Skills/Cities names are accepted in search",
                "job_search": True,
                "searched_skills": searched_skills,
                "searched_locations": searched_locations,
                "meta_title": meta_title,
                "meta_description": meta_description,
            },
        )
コード例 #12
0
ファイル: views.py プロジェクト: vlada5/opensource-job-portal
def view_resumes(request, job_post_id):
    job_post = get_object_or_404(JobPost, id=job_post_id)
    selected_skills = []
    agency_resumes = AppliedJobs.objects.filter(job_post=job_post)

    if request.POST.get('recruiters'):
        agency_resumes = agency_resumes.filter(
            applicant__uploaded_by_id=request.POST.get('recruiters'))
    if request.POST.get('experience'):
        agency_resumes = agency_resumes.filter(
            applicant__experience=request.POST.get('experience'))
    if request.POST.getlist('skills'):
        skills = Skill.objects.filter(id__in=request.POST.getlist('skills'))
        agency_resumes = agency_resumes.filter(applicant__skill__in=skills)
        selected_skills = request.POST.getlist('skills')

    if request.POST.get('apply_job'):
        if request.POST.get('jobposts_type'):

            for each in request.POST.getlist('apply_job'):
                agency_applicant = AgencyApplicants.objects.get(
                    id=each, job_post=job_post)
                agency_applicant.status = request.POST.get('jobposts_type')
                agency_applicant.save()

                agency_applicant.applicant.status = 'Pending'
                agency_applicant.applicant.save()

            if str(request.POST.get('jobposts_type')) == 'Hired':
                applicants = AgencyApplicants.objects.filter(
                    id__in=request.POST.getlist('apply_job')).values_list('applicant', flat=True)
                applicant_agency_resumes = AgencyResume.objects.filter(
                    id__in=applicants)
                applicant_agency_resumes.update(
                    status=request.POST.get('jobposts_type'))

    no_of_jobs = len(agency_resumes)
    items_per_page = 10
    no_pages = int(math.ceil(float(len(agency_resumes)) / items_per_page))

    try:
        if int(request.GET.get('page')) > (no_pages + 2):
            page = 1
            return HttpResponseRedirect(reverse('jobs:index'))
        else:
            page = int(request.GET.get('page'))
    except:
        page = 1
    agency_resumes = agency_resumes[
        (page - 1) * items_per_page:page * items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)
    skills = Skill.objects.filter(status='Active')
    recruiters = User.objects.filter(company=request.user.company)
    return render(request, "recruiter/company/job_resume_view.html", {'job_post': job_post,
                                                                      'agency_resumes': agency_resumes,
                                                                      'recruiters': recruiters,
                                                                      'years': YEARS,
                                                                      'skills': skills,
                                                                      'aft_page': aft_page,
                                                                      'after_page': after_page,
                                                                      'prev_page': prev_page,
                                                                      'previous_page': previous_page,
                                                                      'current_page': page,
                                                                      'last_page': no_pages,
                                                                      'no_of_jobs': no_of_jobs,
                                                                      'status': POST,
                                                                      'selected_skills': selected_skills
                                                                      })