1 # -*- encoding: utf-8 -*-
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
.core
.urlresolvers
import reverse
7 from django
.http
import HttpResponse
, HttpResponseRedirect
8 from django
.shortcuts
import render_to_response
, redirect
, get_object_or_404
9 from django
.template
import Context
, RequestContext
, Template
10 from django
.core
.mail
import EmailMultiAlternatives
14 from project
.recrutement
import models
as recr
15 from recrutement
.workflow
import grp_evaluateurs_recrutement
18 return render_to_response('recrutement/index.html', {},
19 RequestContext(request
))
21 def affecter_evaluateurs_candidats(request
):
22 candidat_ids
= request
.GET
.get('ids').split(',')
23 candidats
= Candidat
.objects
.filter(id__in
=candidat_ids
)
24 if request
.method
== "POST":
25 form
= EvaluateurForm(request
.POST
, candidats
=candidats
)
28 messages
.add_message(request
, messages
.SUCCESS
,
29 "Les évaluateurs ont été affectés aux candidats.")
30 return redirect("admin:recrutement_candidat_changelist")
32 form
= EvaluateurForm(candidats
=candidats
)
35 return render_to_response("recrutement/affecter_evaluateurs.html",
36 Context(c
), context_instance
= RequestContext(request
))
38 def selectionner_template(request
):
39 candidat_ids
= request
.GET
.get('ids')
40 if request
.method
== "POST":
41 form
= CandidatCourrielTemplateForm(request
.POST
)
44 courriel_template_id
= form
.get_template()
46 return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
47 "?ids_cand=%s&id_temp=%s" % (candidat_ids
, courriel_template_id
))
49 form
= CandidatCourrielTemplateForm()
52 return render_to_response("recrutement/selectionner_template.html",
53 Context(c
), context_instance
= RequestContext(request
))
55 def envoyer_courriel_candidats(request
):
56 candidat_ids
= request
.GET
.get('ids_cand').split(',')
57 candidats
= Candidat
.objects
.filter(id__in
=candidat_ids
)
58 template_id
= request
.GET
.get('id_temp')
59 template
= CourrielTemplate
.objects
.get(id=template_id
)
61 if request
.method
== "POST":
62 form
= CandidatCourrielForm(request
.POST
, instance
=template
,
63 candidats
=candidats
, template
=template
)
67 courriel_template
= CourrielTemplate()
68 courriel_template
.nom_modele
= template
.nom_modele
69 courriel_template
.sujet
= form
.data
['sujet']
70 courriel_template
.plain_text
= form
.data
['plain_text']
71 courriel_template
.html
= form
.data
['html']
72 for cand
in candidats
:
73 send_templated_email(cand
, courriel_template
)
74 messages
.add_message(request
, messages
.SUCCESS
,
75 "Le email a été envoyé aux candidats.")
76 return redirect("admin:recrutement_candidat_changelist")
78 form
= CandidatCourrielForm(candidats
=candidats
, template
=template
,
79 initial
={'sujet': template
.sujet
,
80 'plain_text': template
.plain_text
,
81 'html': template
.html
})
84 return render_to_response("recrutement/envoyer_courriel_candidats.html",
85 Context(c
), context_instance
= RequestContext(request
))
87 def postuler_appel_offre(request
):
89 offre_emploi
= get_object_or_404(OffreEmploi
, id=request
.GET
.get('id'))
91 candidat
.offre_emploi
= offre_emploi
93 if request
.method
== "POST":
94 form
= PostulerOffreEmploiForm(request
.POST
,
95 instance
=candidat
, offre_emploi
=offre_emploi
)
96 piecesForm
= CandidatPieceForm(request
.POST
, request
.FILES
,
98 if form
.is_valid() and piecesForm
.is_valid():
100 piecesForm
.instance
= offre
103 courriel_template
= CourrielTemplate
.objects
.\
104 get(nom_modele
='Confirmation postulation (automatique)')
105 send_templated_email(candidat
, courriel_template
)
107 messages
.add_message(request
, messages
.SUCCESS
,
108 "Votre application à l'appel d'offre d'emploi a \
110 return redirect("admin:recrutement_offreemploi_changelist")
112 messages
.add_message(request
, messages
.ERROR
,
113 'Il y a des erreurs dans le formulaire.')
115 form
= PostulerOffreEmploiForm(instance
=candidat
,
116 offre_emploi
=offre_emploi
)
117 piecesForm
= CandidatPieceForm(instance
=candidat
)
119 vars.update(dict(form
=form
, candidat
=candidat
, piecesForm
=piecesForm
, ))
121 return render_to_response('recrutement/postuler_appel_offre.html', vars,
122 RequestContext(request
))
124 def affecter_evaluateurs_offre_emploi(request
):
125 offre_emploi_ids
= request
.GET
.get('ids').split(',')
126 offres_emploi
= OffreEmploi
.objects
.filter(id__in
=offre_emploi_ids
)
127 candidats
= Candidat
.objects
.filter(offre_emploi__in
=offres_emploi
)
128 if request
.method
== "POST":
129 form
= EvaluateurForm(request
.POST
, candidats
=candidats
)
132 messages
.add_message(request
, messages
.SUCCESS
,
133 "Les évaluateurs ont été affectés aux candidats.")
134 return redirect("admin:recrutement_offreemploi_changelist")
136 form
= EvaluateurForm(candidats
=candidats
)
139 return render_to_response("recrutement/affecter_evaluateurs.html",
140 Context(c
), context_instance
= RequestContext(request
))
142 def send_templated_email(candidat
, template
):
144 sujet_template
= Template(template
.sujet
)
145 dict_sujet
= {"offre_emploi": candidat
.offre_emploi
.nom
,}
146 sujet
= Context(dict_sujet
)
148 texte_template
= Template(template
.plain_text
)
149 dict_texte
= {"nom_candidat": candidat
.nom
,
150 "prenom_candidat": candidat
.prenom
,
151 "offre_emploi": candidat
.offre_emploi
.nom
,
152 "genre_candidat": "Monsieur" if candidat
.genre
== "M" \
155 texte
= Context(dict_texte
)
157 html_template
= Template(template
.html
)
158 texte_html
= Context(dict_texte
)
159 msg
= EmailMultiAlternatives(sujet_template
.render(sujet
),
160 texte_template
.render(texte
),
161 'recrutement@auf.org',
163 msg
.attach_alternative(texte_template
.render(texte_html
), "text/html")