1 # -*- encoding: utf-8 -*-
3 from django
.core
.mail
import send_mail
4 from django
.core
.urlresolvers
import reverse
5 from django
.contrib
import messages
6 from django
.contrib
.auth
.models
import User
7 from django
.views
.static
import serve
8 from django
.http
import HttpResponse
, HttpResponseRedirect
9 from django
.shortcuts
import render_to_response
, redirect
, get_object_or_404
10 from django
.template
import Context
, RequestContext
, Template
11 from django
.core
.mail
import EmailMultiAlternatives
15 from recrutement
.workflow
import grp_evaluateurs_recrutement
, recrutement_groupes
17 ################################################################################
19 ################################################################################
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
)
39 return render_to_response('recrutement/index.html', {},
40 RequestContext(request
))
42 def selectionner_template(request
):
43 candidat_ids
= request
.GET
.get('ids')
44 if request
.method
== "POST":
45 form
= CandidatCourrielTemplateForm(request
.POST
)
48 courriel_template_id
= form
.get_template()
50 return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
51 "?ids_cand=%s&id_temp=%s" % (candidat_ids
, courriel_template_id
))
53 form
= CandidatCourrielTemplateForm()
56 return render_to_response("recrutement/selectionner_template.html",
57 Context(c
), context_instance
= RequestContext(request
))
59 def envoyer_courriel_candidats(request
):
60 candidat_ids
= request
.GET
.get('ids_cand').split(',')
61 candidats
= Candidat
.objects
.filter(id__in
=candidat_ids
)
62 template_id
= request
.GET
.get('id_temp')
63 template
= CourrielTemplate
.objects
.get(id=template_id
)
65 if request
.method
== "POST":
66 form
= CandidatCourrielForm(request
.POST
, instance
=template
,
67 candidats
=candidats
, template
=template
)
71 courriel_template
= CourrielTemplate()
72 courriel_template
.nom_modele
= template
.nom_modele
73 courriel_template
.sujet
= form
.data
['sujet']
74 courriel_template
.plain_text
= form
.data
['plain_text']
75 courriel_template
.html
= form
.data
['html']
76 for cand
in candidats
:
77 send_templated_email(cand
, courriel_template
)
78 messages
.add_message(request
, messages
.SUCCESS
,
79 "Le email a été envoyé aux candidats.")
80 return redirect("admin:recrutement_candidat_changelist")
82 form
= CandidatCourrielForm(candidats
=candidats
, template
=template
,
83 initial
={'sujet': template
.sujet
,
84 'plain_text': template
.plain_text
,
85 'html': template
.html
})
88 return render_to_response("recrutement/envoyer_courriel_candidats.html",
89 Context(c
), context_instance
= RequestContext(request
))
91 def affecter_evaluateurs_offre_emploi(request
):
92 offre_emploi_ids
= request
.GET
.get('ids').split(',')
93 offres_emploi
= OffreEmploi
.objects
.filter(id__in
=offre_emploi_ids
)
94 if request
.method
== "POST":
95 form
= EvaluateurForm(request
.POST
, offres_emploi
=offres_emploi
)
98 messages
.add_message(request
, messages
.SUCCESS
,
99 "Les évaluateurs ont été affectés aux offres d'emploi.")
100 return redirect("admin:recrutement_offreemploi_changelist")
102 form
= EvaluateurForm(offres_emploi
=offres_emploi
)
105 return render_to_response("recrutement/affecter_evaluateurs.html",
106 Context(c
), context_instance
= RequestContext(request
))
108 def send_templated_email(candidat
, template
):
109 from django
.conf
import settings
111 sujet_template
= Template(template
.sujet
)
112 dict_sujet
= {"offre_emploi": candidat
.offre_emploi
.nom
,}
113 sujet
= Context(dict_sujet
)
115 texte_template
= Template(template
.plain_text
)
116 dict_texte
= {"nom_candidat": candidat
.nom
,
117 "prenom_candidat": candidat
.prenom
,
118 "offre_emploi": candidat
.offre_emploi
.nom
,
119 "genre_candidat": "Monsieur" if candidat
.genre
== "M" \
122 texte
= Context(dict_texte
)
124 html_template
= Template(template
.html
)
125 texte_html
= Context(dict_texte
)
127 dst_emails
= ['developpeurs@ca.auf.org', ]
129 dst_emails
= [candidat
.email
, ]
130 msg
= EmailMultiAlternatives(sujet_template
.render(sujet
),
131 texte_template
.render(texte
),
132 'recrutement@auf.org',
135 msg
.attach_alternative(texte_template
.render(texte_html
), "text/html")
139 def candidat_pdf(request
):
140 candidat_id
= request
.GET
.get('id')
141 candidat
= Candidat
.objects
.get(id=candidat_id
)
143 return render_to_response("recrutement/candidat_pdf.html",
144 Context({'candidat' : candidat
}), context_instance
= RequestContext(request
))