kaauh_ats/recruitment/views_frontend.py
Marwan Alwali 0357921e3d update
2025-09-21 17:35:20 +03:00

54 lines
1.9 KiB
Python

from django.shortcuts import render, get_object_or_404
from . import models
from django.utils.translation import get_language
from . import forms
from django.contrib.auth.decorators import login_required, user_passes_test
import ast
from .dashboard import get_dashboard_data
def job_list(request):
jobs = models.Job.objects.filter(is_published=True).order_by('-created_at')
lang = get_language()
return render(request, 'recruitment/job_list.html', {'jobs': jobs, 'lang': lang})
def job_detail(request, job_id):
job = get_object_or_404(models.Job, id=job_id, is_published=True)
form = forms.CandidateForm()
return render(request, 'recruitment/job_detail.html', {'job': job, 'form': form})
@login_required
def training_list(request):
materials = models.TrainingMaterial.objects.all().order_by('-created_at')
return render(request, 'recruitment/training_list.html', {'materials': materials})
def candidate_detail(request, candidate_id):
candidate = get_object_or_404(models.Candidate, id=candidate_id)
try:
parsed = ast.literal_eval(candidate.parsed_summary)
except:
parsed = {}
return render(request, 'recruitment/candidate_detail.html', {
'candidate': candidate,
'parsed': parsed,
})
def dashboard_view(request):
total_jobs = models.Job.objects.count()
total_candidates = models.Candidate.objects.count()
jobs = models.Job.objects.all()
job_titles = [job.title for job in jobs]
job_app_counts = [job.candidates.count() for job in jobs]
average_applications = round(sum(job_app_counts) / total_jobs, 2) if total_jobs > 0 else 0
context = {
'total_jobs': total_jobs,
'total_candidates': total_candidates,
'job_titles': job_titles,
'job_app_counts': job_app_counts,
'average_applications': average_applications,
}
return render(request, 'recruitment/dashboard.html', context)