1635: Évaluer plusieurs candidats simultanément
[auf_rh_dae.git] / project / recrutement / views.py
1 # -*- encoding: utf-8 -*-
2 from django.shortcuts import redirect, render_to_response, get_object_or_404
3 from django.http import HttpResponse
4 from django.contrib import messages
5 from django.template import Context, RequestContext
6 from django.shortcuts import render_to_response, redirect
7 from django.template import RequestContext
8 from django.contrib.auth.models import User
9
10 from forms import *
11 from models import *
12 from project.recrutement import models as recr
13
14 def index(request):
15 return render_to_response('recrutement/index.html', {},
16 RequestContext(request))
17
18 def evaluer_candidat(request):
19 candidat = get_object_or_404(Candidat, id=request.GET.get('id'))
20
21 try:
22 evaluateur = UserProfile.objects.get(user=request.user)
23 except UserProfile.DoesNotExist:
24 messages.add_message(request, messages.ERROR,
25 "Vous ne pouvez pas évaluer un candidat.")
26 return redirect("admin:recrutement_candidat_changelist")
27
28 if request.method == "POST":
29 candidat_evaluation = CandidatEvaluation()
30 candidat_evaluation.candidat = candidat
31 candidat_evaluation.evaluateur = evaluateur
32 form = CandidatEvaluationForm(request.POST,
33 instance=candidat_evaluation, candidat=candidat,
34 evaluateur=evaluateur)
35 if form.is_valid():
36 form.save()
37 messages.add_message(request, messages.SUCCESS,
38 "Le commentaire et la note ont été affectés \
39 au candidat.")
40 return redirect("admin:recrutement_candidat_changelist")
41 else:
42 form = CandidatEvaluationForm(candidat=candidat, evaluateur=evaluateur)
43
44 c = {'form' : form}
45 return render_to_response("recrutement/evaluer_candidat.html", Context(c),
46 context_instance = RequestContext(request))
47
48 # TODO: Semblable à evaluer_candidat, possibilité de le mettre dans la
49 # même fonction?
50 def evaluer_candidats(request):
51 candidat_ids = request.GET.get('ids').split(',')
52 candidats = Candidat.objects.filter(id__in=candidat_ids)
53
54 try:
55 evaluateur = UserProfile.objects.get(user=request.user)
56 except UserProfile.DoesNotExist:
57 messages.add_message(request, messages.ERROR,
58 "Vous ne pouvez pas évaluer un candidat.")
59 return redirect("admin:recrutement_candidat_changelist")
60
61 if request.method == "POST":
62 for c in candidats:
63 candidat_evaluation = CandidatEvaluation()
64 candidat_evaluation.candidat = c
65 candidat_evaluation.evaluateur = evaluateur
66 form = CandidatEvaluationForm(request.POST,
67 instance=candidat_evaluation, candidat=c,
68 evaluateur=evaluateur)
69 if form.is_valid():
70 form.save()
71 messages.add_message(request, messages.SUCCESS,
72 "Le commentaire et la note ont été affectés \
73 aux candidats.")
74
75 return redirect("admin:recrutement_candidat_changelist")
76 else:
77 form = CandidatEvaluationForm(candidat=None, evaluateur=evaluateur)
78
79 c = {'form' : form}
80 return render_to_response("recrutement/evaluer_candidat.html", Context(c),
81 context_instance = RequestContext(request))
82
83 def affecter_evaluateurs_candidats(request):
84 candidat_ids = request.GET.get('ids').split(',')
85 candidats = Candidat.objects.filter(id__in=candidat_ids)
86 if request.method == "POST":
87 form = EvaluateurForm(request.POST, candidats=candidats)
88 if form.is_valid():
89 form.save()
90 messages.add_message(request, messages.SUCCESS,
91 "Les évaluateurs ont été affectés aux candidats.")
92 return redirect("admin:recrutement_candidat_changelist")
93 else:
94 form = EvaluateurForm(candidats=candidats)
95
96 c = {'form' : form}
97 return render_to_response("recrutement/affecter_evaluateurs.html",
98 Context(c), context_instance = RequestContext(request))
99
100 def postuler_appel_offre(request):
101
102 vars = dict()
103 offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id'))
104 candidat = Candidat()
105 candidat.offre_emploi = offre_emploi
106
107 if request.method == "POST":
108 form = PostulerOffreEmploiForm(request.POST,
109 instance=candidat, offre_emploi=offre_emploi)
110 piecesForm = CandidatPieceForm(request.POST, request.FILES,
111 instance=candidat)
112 print form.errors
113 if form.is_valid() and piecesForm.is_valid():
114 offre = form.save()
115 piecesForm.instance = offre
116 piecesForm.save()
117 messages.add_message(request, messages.SUCCESS,
118 "Votre application à l'appel d'offre d'emploi a \
119 été effectuée.")
120 return redirect("admin:recrutement_offreemploi_changelist")
121 else:
122 messages.add_message(request, messages.ERROR,
123 'Il y a des erreurs dans le formulaire.')
124 else:
125 form = PostulerOffreEmploiForm(instance=candidat,
126 offre_emploi=offre_emploi)
127 piecesForm = CandidatPieceForm(instance=candidat)
128
129 vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, ))
130
131 return render_to_response('recrutement/postuler_appel_offre.html', vars,
132 RequestContext(request))