1 # -*- encoding: utf-8 -*-
3 from django
.contrib
import messages
4 from django
.core
.mail
import EmailMultiAlternatives
5 from django
.core
.urlresolvers
import reverse
6 from django
.http
import HttpResponseRedirect
7 from django
.shortcuts
import render_to_response
, redirect
8 from django
.template
import Context
, RequestContext
, Template
9 from django
.views
.static
import serve
11 from auf
.django
.emploi
import models
as emploi
13 from project
.dae
.decorators
import redirect_interdiction
14 from project
.recrutement
import forms
15 from project
.recrutement
import models
16 from project
.recrutement
.workflow
import recrutement_groupes
21 def mediaserve(request
, path
, document_root
=None, show_indexes
=False):
23 Sécuriser l'accès aux fichiers uploadés
28 for grp
in user
.groups
.all():
29 if grp
in recrutement_groupes
:
34 return redirect_interdiction(request
)
36 return serve(request
, path
, document_root
, show_indexes
)
40 return render_to_response(
41 'recrutement/index.html', {}, RequestContext(request
)
45 def selectionner_template(request
):
46 candidat_ids
= request
.GET
.get('ids')
47 if request
.method
== "POST":
48 form
= forms
.CandidatCourrielTemplateForm(request
.POST
)
51 courriel_template_id
= form
.get_template()
53 return HttpResponseRedirect(
54 reverse('envoyer_courriel_candidats') +
55 "?ids_cand=%s&id_temp=%s" %
56 (candidat_ids
, courriel_template_id
)
59 form
= forms
.CandidatCourrielTemplateForm()
61 return render_to_response("recrutement/selectionner_template.html", {
63 }, context_instance
=RequestContext(request
))
66 def envoyer_courriel_candidats(request
):
67 candidat_ids
= request
.GET
.get('ids_cand').split(',')
68 candidats
= models
.Candidat
.objects
.filter(id__in
=candidat_ids
)
69 template_id
= request
.GET
.get('id_temp')
70 template
= models
.CourrielTemplate
.objects
.get(id=template_id
)
72 if request
.method
== "POST":
73 form
= forms
.CandidatCourrielForm(
74 request
.POST
, instance
=template
, candidats
=candidats
,
80 courriel_template
= models
.CourrielTemplate()
81 courriel_template
.nom_modele
= template
.nom_modele
82 courriel_template
.sujet
= form
.data
['sujet']
83 courriel_template
.plain_text
= form
.data
['plain_text']
84 for cand
in candidats
:
85 send_templated_email(cand
, courriel_template
)
87 request
, messages
.SUCCESS
,
88 "Le email a été envoyé aux candidats."
90 return redirect("admin:recrutement_candidat_changelist")
92 form
= forms
.CandidatCourrielForm(
93 candidats
=candidats
, template
=template
,
95 'sujet': template
.sujet
,
96 'plain_text': template
.plain_text
100 return render_to_response("recrutement/envoyer_courriel_candidats.html", {
102 }, context_instance
=RequestContext(request
))
105 def affecter_evaluateurs_offre_emploi(request
):
106 offre_emploi_ids
= request
.GET
.get('ids').split(',')
107 offres_emploi
= emploi
.OffreEmploi
.objects
.filter(id__in
=offre_emploi_ids
)
108 if request
.method
== "POST":
109 form
= forms
.EvaluateurForm(request
.POST
, offres_emploi
=offres_emploi
)
112 messages
.add_message(
113 request
, messages
.SUCCESS
,
114 "Les évaluateurs ont été affectés aux offres d'emploi."
116 return redirect("admin:recrutement_proxyoffreemploi_changelist")
118 form
= forms
.EvaluateurForm(offres_emploi
=offres_emploi
)
120 return render_to_response("recrutement/affecter_evaluateurs.html", {
122 }, context_instance
=RequestContext(request
))
125 def send_templated_email(candidat
, template
):
126 from django
.conf
import settings
128 sujet_template
= Template(template
.sujet
)
129 dict_sujet
= {"offre_emploi": candidat
.offre_emploi
.nom
}
130 sujet
= Context(dict_sujet
)
132 texte_template
= Template(template
.plain_text
)
134 "nom_candidat": candidat
.nom
,
135 "prenom_candidat": candidat
.prenom
,
136 "offre_emploi": candidat
.offre_emploi
.nom
,
137 "genre_candidat": "Monsieur" if candidat
.genre
== "M" else "Madame",
139 texte
= Context(dict_texte
)
140 if getattr(settings
, 'MAILING_ACTIF', False):
141 dst_emails
= [candidat
.email
]
143 dst_emails
= ['developpeurs@ca.auf.org']
144 msg
= EmailMultiAlternatives(
145 sujet_template
.render(sujet
), texte_template
.render(texte
),
146 'recrutement@auf.org', dst_emails
151 def candidat_pdf(request
):
152 candidat_id
= request
.GET
.get('id')
153 candidat
= models
.Candidat
.objects
.get(id=candidat_id
)
155 return render_to_response("recrutement/candidat_pdf.html", {
157 }, context_instance
=RequestContext(request
))