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 recrutement
.workflow
import grp_evaluateurs_recrutement
17 return render_to_response('recrutement/index.html', {},
18 RequestContext(request
))
20 def selectionner_template(request
):
21 candidat_ids
= request
.GET
.get('ids')
22 if request
.method
== "POST":
23 form
= CandidatCourrielTemplateForm(request
.POST
)
26 courriel_template_id
= form
.get_template()
28 return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
29 "?ids_cand=%s&id_temp=%s" % (candidat_ids
, courriel_template_id
))
31 form
= CandidatCourrielTemplateForm()
34 return render_to_response("recrutement/selectionner_template.html",
35 Context(c
), context_instance
= RequestContext(request
))
37 def envoyer_courriel_candidats(request
):
38 candidat_ids
= request
.GET
.get('ids_cand').split(',')
39 candidats
= Candidat
.objects
.filter(id__in
=candidat_ids
)
40 template_id
= request
.GET
.get('id_temp')
41 template
= CourrielTemplate
.objects
.get(id=template_id
)
43 if request
.method
== "POST":
44 form
= CandidatCourrielForm(request
.POST
, instance
=template
,
45 candidats
=candidats
, template
=template
)
49 courriel_template
= CourrielTemplate()
50 courriel_template
.nom_modele
= template
.nom_modele
51 courriel_template
.sujet
= form
.data
['sujet']
52 courriel_template
.plain_text
= form
.data
['plain_text']
53 courriel_template
.html
= form
.data
['html']
54 for cand
in candidats
:
55 send_templated_email(cand
, courriel_template
)
56 messages
.add_message(request
, messages
.SUCCESS
,
57 "Le email a été envoyé aux candidats.")
58 return redirect("admin:recrutement_candidat_changelist")
60 form
= CandidatCourrielForm(candidats
=candidats
, template
=template
,
61 initial
={'sujet': template
.sujet
,
62 'plain_text': template
.plain_text
,
63 'html': template
.html
})
66 return render_to_response("recrutement/envoyer_courriel_candidats.html",
67 Context(c
), context_instance
= RequestContext(request
))
69 def postuler_appel_offre(request
):
71 offre_emploi
= get_object_or_404(OffreEmploi
, id=request
.GET
.get('id'))
73 candidat
.offre_emploi
= offre_emploi
75 if request
.method
== "POST":
76 form
= PostulerOffreEmploiForm(request
.POST
,
77 instance
=candidat
, offre_emploi
=offre_emploi
)
78 piecesForm
= CandidatPieceForm(request
.POST
, request
.FILES
,
80 if form
.is_valid() and piecesForm
.is_valid():
82 piecesForm
.instance
= offre
85 courriel_template
= CourrielTemplate
.objects
.\
86 get(nom_modele
='Confirmation postulation (automatique)')
87 emp
.send_templated_email(candidat
, courriel_template
)
89 messages
.add_message(request
, messages
.SUCCESS
,
90 "Votre application à l'appel d'offre d'emploi a \
92 return redirect("admin:recrutement_offreemploi_changelist")
94 messages
.add_message(request
, messages
.ERROR
,
95 'Il y a des erreurs dans le formulaire.')
97 form
= PostulerOffreEmploiForm(instance
=candidat
,
98 offre_emploi
=offre_emploi
)
99 piecesForm
= CandidatPieceForm(instance
=candidat
)
101 vars.update(dict(form
=form
, candidat
=candidat
, piecesForm
=piecesForm
, ))
103 return render_to_response('recrutement/postuler_appel_offre.html', vars,
104 RequestContext(request
))
106 def affecter_evaluateurs_offre_emploi(request
):
107 offre_emploi_ids
= request
.GET
.get('ids').split(',')
108 offres_emploi
= OffreEmploi
.objects
.filter(id__in
=offre_emploi_ids
)
109 if request
.method
== "POST":
110 form
= EvaluateurForm(request
.POST
, offres_emploi
=offres_emploi
)
113 messages
.add_message(request
, messages
.SUCCESS
,
114 "Les évaluateurs ont été affectés aux offres d'emploi.")
115 return redirect("admin:recrutement_offreemploi_changelist")
117 form
= EvaluateurForm(offres_emploi
=offres_emploi
)
120 return render_to_response("recrutement/affecter_evaluateurs.html",
121 Context(c
), context_instance
= RequestContext(request
))
123 def send_templated_email(candidat
, template
):
125 sujet_template
= Template(template
.sujet
)
126 dict_sujet
= {"offre_emploi": candidat
.offre_emploi
.nom
,}
127 sujet
= Context(dict_sujet
)
129 texte_template
= Template(template
.plain_text
)
130 dict_texte
= {"nom_candidat": candidat
.nom
,
131 "prenom_candidat": candidat
.prenom
,
132 "offre_emploi": candidat
.offre_emploi
.nom
,
133 "genre_candidat": "Monsieur" if candidat
.genre
== "M" \
136 texte
= Context(dict_texte
)
138 html_template
= Template(template
.html
)
139 texte_html
= Context(dict_texte
)
140 msg
= EmailMultiAlternatives(sujet_template
.render(sujet
),
141 texte_template
.render(texte
),
142 'recrutement@auf.org',
144 msg
.attach_alternative(texte_template
.render(texte_html
), "text/html")