1 # -*- encoding: utf-8 -*-
3 from django
.core
.urlresolvers
import reverse
4 from django
.contrib
import messages
5 from django
.views
.static
import serve
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
.core
.mail
import EmailMultiAlternatives
13 from recrutement
.workflow
import recrutement_groupes
15 ################################################################################
17 ################################################################################
19 def mediaserve(request
, path
, document_root
=None, show_indexes
=False):
21 Sécuriser l'accès aux fichiers uploadés
26 for grp
in user
.groups
.all():
27 if grp
in recrutement_groupes
:
32 return redirect_interdiction(request
)
34 return serve(request
, path
, document_root
, show_indexes
)
37 return render_to_response('recrutement/index.html', {},
38 RequestContext(request
))
40 def selectionner_template(request
):
41 candidat_ids
= request
.GET
.get('ids')
42 if request
.method
== "POST":
43 form
= CandidatCourrielTemplateForm(request
.POST
)
46 courriel_template_id
= form
.get_template()
48 return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
49 "?ids_cand=%s&id_temp=%s" % (candidat_ids
, courriel_template_id
))
51 form
= CandidatCourrielTemplateForm()
54 return render_to_response("recrutement/selectionner_template.html",
55 Context(c
), context_instance
= RequestContext(request
))
57 def envoyer_courriel_candidats(request
):
58 candidat_ids
= request
.GET
.get('ids_cand').split(',')
59 candidats
= Candidat
.objects
.filter(id__in
=candidat_ids
)
60 template_id
= request
.GET
.get('id_temp')
61 template
= CourrielTemplate
.objects
.get(id=template_id
)
63 if request
.method
== "POST":
64 form
= CandidatCourrielForm(request
.POST
, instance
=template
,
65 candidats
=candidats
, template
=template
)
69 courriel_template
= CourrielTemplate()
70 courriel_template
.nom_modele
= template
.nom_modele
71 courriel_template
.sujet
= form
.data
['sujet']
72 courriel_template
.plain_text
= form
.data
['plain_text']
73 courriel_template
.html
= form
.data
['html']
74 for cand
in candidats
:
75 send_templated_email(cand
, courriel_template
)
76 messages
.add_message(request
, messages
.SUCCESS
,
77 "Le email a été envoyé aux candidats.")
78 return redirect("admin:recrutement_candidat_changelist")
80 form
= CandidatCourrielForm(candidats
=candidats
, template
=template
,
81 initial
={'sujet': template
.sujet
,
82 'plain_text': template
.plain_text
,
83 'html': template
.html
})
86 return render_to_response("recrutement/envoyer_courriel_candidats.html",
87 Context(c
), context_instance
= RequestContext(request
))
89 def affecter_evaluateurs_offre_emploi(request
):
90 offre_emploi_ids
= request
.GET
.get('ids').split(',')
91 offres_emploi
= OffreEmploi
.objects
.filter(id__in
=offre_emploi_ids
)
92 if request
.method
== "POST":
93 form
= EvaluateurForm(request
.POST
, offres_emploi
=offres_emploi
)
96 messages
.add_message(request
, messages
.SUCCESS
,
97 "Les évaluateurs ont été affectés aux offres d'emploi.")
98 return redirect("admin:recrutement_proxyoffreemploi_changelist")
100 form
= EvaluateurForm(offres_emploi
=offres_emploi
)
103 return render_to_response("recrutement/affecter_evaluateurs.html",
104 Context(c
), context_instance
= RequestContext(request
))
106 def send_templated_email(candidat
, template
):
107 from django
.conf
import settings
109 sujet_template
= Template(template
.sujet
)
110 dict_sujet
= {"offre_emploi": candidat
.offre_emploi
.nom
,}
111 sujet
= Context(dict_sujet
)
113 texte_template
= Template(template
.plain_text
)
114 dict_texte
= {"nom_candidat": candidat
.nom
,
115 "prenom_candidat": candidat
.prenom
,
116 "offre_emploi": candidat
.offre_emploi
.nom
,
117 "genre_candidat": "Monsieur" if candidat
.genre
== "M" \
120 texte
= Context(dict_texte
)
122 html_template
= Template(template
.html
)
123 texte_html
= Context(dict_texte
)
125 dst_emails
= ['developpeurs@ca.auf.org', ]
127 dst_emails
= [candidat
.email
, ]
128 msg
= EmailMultiAlternatives(sujet_template
.render(sujet
),
129 texte_template
.render(texte
),
130 'recrutement@auf.org',
133 msg
.attach_alternative(texte_template
.render(texte_html
), "text/html")
137 def candidat_pdf(request
):
138 candidat_id
= request
.GET
.get('id')
139 candidat
= Candidat
.objects
.get(id=candidat_id
)
141 return render_to_response("recrutement/candidat_pdf.html",
142 Context({'candidat' : candidat
}), context_instance
= RequestContext(request
))