Finalisation du tableau de bords pour les évaluateurs
[auf_rh_dae.git] / project / recrutement / views.py
1 # -*- encoding: utf-8 -*-
2
3 from django.contrib import messages
4 from django.contrib.auth.models import User
5 from django.core.mail import send_mail
6 from django.http import HttpResponse
7 from django.shortcuts import render_to_response, redirect, get_object_or_404
8 from django.template import Context, RequestContext
9
10 from forms import *
11 from models import *
12 from project.recrutement import models as recr
13 from recrutement.workflow import grp_evaluateurs_recrutement
14
15 def index(request):
16 return render_to_response('recrutement/index.html', {},
17 RequestContext(request))
18
19 def afficher_candidat(request):
20 candidat = get_object_or_404(Candidat, id=request.GET.get('id'))
21 var = {'candidat': candidat,}
22 return render_to_response("recrutement/afficher_candidat.html", var,
23 RequestContext(request))
24
25 def evaluer_candidat(request):
26 candidat = get_object_or_404(Candidat, id=request.GET.get('id'))
27
28 try:
29 evaluateur = Evaluateur.objects.get(user=request.user)
30 except Evaluateur.DoesNotExist:
31 messages.add_message(request, messages.ERROR,
32 "Vous ne pouvez pas évaluer ce candidat.")
33 return redirect("admin:recrutement_proxycandidat_changelist")
34
35 if request.method == "POST":
36 candidat_evaluation = CandidatEvaluation()
37 candidat_evaluation.candidat = candidat
38 candidat_evaluation.evaluateur = evaluateur
39 form = CandidatEvaluationForm(request.POST,
40 instance=candidat_evaluation, candidat=candidat,
41 evaluateur=evaluateur)
42 if form.is_valid():
43 form.save()
44 messages.add_message(request, messages.SUCCESS,
45 "Le commentaire et la note ont été affectés \
46 au candidat.")
47
48 return redirect("admin:recrutement_proxycandidat_changelist")
49 else:
50 form = CandidatEvaluationForm(candidat=candidat, evaluateur=evaluateur)
51
52 c = {'form' : form}
53 # Voir ou rediriger
54 return render_to_response("recrutement/evaluer_candidat.html", Context(c),
55 context_instance = RequestContext(request))
56
57 def affecter_evaluateurs_candidats(request):
58 candidat_ids = request.GET.get('ids').split(',')
59 candidats = Candidat.objects.filter(id__in=candidat_ids)
60 if request.method == "POST":
61 form = EvaluateurForm(request.POST, candidats=candidats)
62 if form.is_valid():
63 form.save()
64 messages.add_message(request, messages.SUCCESS,
65 "Les évaluateurs ont été affectés aux candidats.")
66 return redirect("admin:recrutement_candidat_changelist")
67 else:
68 form = EvaluateurForm(candidats=candidats)
69
70 c = {'form' : form}
71 return render_to_response("recrutement/affecter_evaluateurs.html",
72 Context(c), context_instance = RequestContext(request))
73
74 def envoyer_courriel_candidats(request):
75 candidat_ids = request.GET.get('ids').split(',')
76 candidats = Candidat.objects.filter(id__in=candidat_ids)
77
78 if request.method == "POST":
79 form = CandidatCourrielForm(request.POST, candidats=candidats)
80 if form.is_valid():
81 form.save()
82 messages.add_message(request, messages.SUCCESS,
83 "Les évaluateurs ont été affectés aux candidats.")
84 return redirect("admin:recrutement_candidat_changelist")
85 else:
86 form = CandidatCourrielForm(candidats=candidats)
87
88 c = {'form' : form}
89 return render_to_response("recrutement/envoyer_courriel_candidats.html",
90 Context(c), context_instance = RequestContext(request))
91
92 def postuler_appel_offre(request):
93
94 vars = dict()
95 offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id'))
96 candidat = Candidat()
97 candidat.offre_emploi = offre_emploi
98
99 if request.method == "POST":
100 form = PostulerOffreEmploiForm(request.POST,
101 instance=candidat, offre_emploi=offre_emploi)
102 piecesForm = CandidatPieceForm(request.POST, request.FILES,
103 instance=candidat)
104 print form.errors
105 if form.is_valid() and piecesForm.is_valid():
106 offre = form.save()
107 piecesForm.instance = offre
108 piecesForm.save()
109 messages.add_message(request, messages.SUCCESS,
110 "Votre application à l'appel d'offre d'emploi a \
111 été effectuée.")
112
113 # Envoi d'un email de confirmation
114 send_mail(u"Confirmation de postulation pour le poste \
115 de " + offre_emploi.nom,
116 u"Bonjour " + candidat.prenom + " " + candidat.nom +
117 u", \nceci est un email pour vous confirmer que votre \
118 postulation pour l'offre d'emploi: " +
119 offre_emploi.nom + u" a été effectuée avec succès. Vous\
120 devriez être contacté sous peu par l'AUF. \n\n Merci \
121 pour votre intérêt envers l'AUF.",
122 'test@auf.org',
123 [candidat.email], fail_silently=False)
124
125 return redirect("admin:recrutement_offreemploi_changelist")
126 else:
127 messages.add_message(request, messages.ERROR,
128 'Il y a des erreurs dans le formulaire.')
129 else:
130 form = PostulerOffreEmploiForm(instance=candidat,
131 offre_emploi=offre_emploi)
132 piecesForm = CandidatPieceForm(instance=candidat)
133
134 vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, ))
135
136 return render_to_response('recrutement/postuler_appel_offre.html', vars,
137 RequestContext(request))