import fitz # PyMuPDF import spacy import os from recruitment import models nlp = spacy.load("en_core_web_sm") def extract_text_from_pdf(pdf_path): text = "" with fitz.open(pdf_path) as doc: for page in doc: text += page.get_text() return text def extract_summary_from_pdf(pdf_path): if not os.path.exists(pdf_path): return {'error': 'File not found'} text = extract_text_from_pdf(pdf_path) doc = nlp(text) summary = { 'name': doc.ents[0].text if doc.ents else '', 'skills': [chunk.text for chunk in doc.noun_chunks if len(chunk.text.split()) > 1], 'summary': text[:500] } return summary def dashboard_callback(request, context): 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] context.update({ "total_jobs": total_jobs, "total_candidates": total_candidates, "job_titles": job_titles, "job_app_counts": job_app_counts, }) return context