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)