1677: Changer les informations concernant le SMTP + composer message. 1655: Envois...
[auf_rh_dae.git] / project / recrutement / views.py
1 # -*- encoding: utf-8 -*-
2
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
11
12 from forms import *
13 from models import *
14 from project.recrutement import models as recr
15 from recrutement.workflow import grp_evaluateurs_recrutement
16
17 def index(request):
18 return render_to_response('recrutement/index.html', {},
19 RequestContext(request))
20
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)
26 if form.is_valid():
27 form.save()
28 messages.add_message(request, messages.SUCCESS,
29 "Les évaluateurs ont été affectés aux candidats.")
30 return redirect("admin:recrutement_candidat_changelist")
31 else:
32 form = EvaluateurForm(candidats=candidats)
33
34 c = {'form' : form}
35 return render_to_response("recrutement/affecter_evaluateurs.html",
36 Context(c), context_instance = RequestContext(request))
37
38 def selectionner_template(request):
39 candidat_ids = request.GET.get('ids')
40 if request.method == "POST":
41 form = CandidatCourrielTemplateForm(request.POST)
42 if form.is_valid():
43 form.save()
44 courriel_template_id = form.get_template()
45
46 return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
47 "?ids_cand=%s&id_temp=%s" % (candidat_ids, courriel_template_id))
48 else:
49 form = CandidatCourrielTemplateForm()
50
51 c = {'form' : form}
52 return render_to_response("recrutement/selectionner_template.html",
53 Context(c), context_instance = RequestContext(request))
54
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)
60
61 if request.method == "POST":
62 form = CandidatCourrielForm(request.POST, instance=template,
63 candidats=candidats, template=template)
64
65 if form.is_valid():
66 form.save()
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 import pdb;pdb.set_trace()
74 send_templated_email(cand, courriel_template)
75 messages.add_message(request, messages.SUCCESS,
76 "Le email a été envoyé aux candidats.")
77 return redirect("admin:recrutement_candidat_changelist")
78 else:
79 form = CandidatCourrielForm(candidats=candidats, template=template,
80 initial={'sujet': template.sujet,
81 'plain_text': template.plain_text,
82 'html': template.html})
83
84 c = {'form' : form}
85 return render_to_response("recrutement/envoyer_courriel_candidats.html",
86 Context(c), context_instance = RequestContext(request))
87
88 def postuler_appel_offre(request):
89 vars = dict()
90 offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id'))
91 candidat = Candidat()
92 candidat.offre_emploi = offre_emploi
93
94 if request.method == "POST":
95 form = PostulerOffreEmploiForm(request.POST,
96 instance=candidat, offre_emploi=offre_emploi)
97 piecesForm = CandidatPieceForm(request.POST, request.FILES,
98 instance=candidat)
99 if form.is_valid() and piecesForm.is_valid():
100 offre = form.save()
101 piecesForm.instance = offre
102 piecesForm.save()
103
104 courriel_template = CourrielTemplate.objects.\
105 get(nom_modele='Confirmation postulation (automatique)')
106 send_templated_email(candidat, courriel_template)
107
108 messages.add_message(request, messages.SUCCESS,
109 "Votre application à l'appel d'offre d'emploi a \
110 été effectuée.")
111 return redirect("admin:recrutement_offreemploi_changelist")
112 else:
113 messages.add_message(request, messages.ERROR,
114 'Il y a des erreurs dans le formulaire.')
115 else:
116 form = PostulerOffreEmploiForm(instance=candidat,
117 offre_emploi=offre_emploi)
118 piecesForm = CandidatPieceForm(instance=candidat)
119
120 vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, ))
121
122 return render_to_response('recrutement/postuler_appel_offre.html', vars,
123 RequestContext(request))
124
125 def affecter_evaluateurs_offre_emploi(request):
126 offre_emploi_ids = request.GET.get('ids').split(',')
127 offres_emploi = OffreEmploi.objects.filter(id__in=offre_emploi_ids)
128 candidats = Candidat.objects.filter(offre_emploi__in=offres_emploi)
129 if request.method == "POST":
130 form = EvaluateurForm(request.POST, candidats=candidats)
131 if form.is_valid():
132 form.save()
133 messages.add_message(request, messages.SUCCESS,
134 "Les évaluateurs ont été affectés aux candidats.")
135 return redirect("admin:recrutement_offreemploi_changelist")
136 else:
137 form = EvaluateurForm(candidats=candidats)
138
139 c = {'form' : form}
140 return render_to_response("recrutement/affecter_evaluateurs.html",
141 Context(c), context_instance = RequestContext(request))
142
143 def send_templated_email(candidat, template):
144 # Sujet
145 sujet_template = Template(template.sujet)
146 dict_sujet = {"offre_emploi": candidat.offre_emploi.nom,}
147 sujet = Context(dict_sujet)
148 # Plain text
149 texte_template = Template(template.plain_text)
150 dict_texte = {"nom_candidat": candidat.nom,
151 "prenom_candidat": candidat.prenom,
152 "offre_emploi": candidat.offre_emploi.nom,}
153 texte = Context(dict_texte)
154 # HTML text
155 html_template = Template(template.html)
156 texte_html = Context(dict_texte)
157 msg = EmailMultiAlternatives(sujet_template.render(sujet),
158 texte_template.render(texte),
159 'recrutement@auf.org',
160 [candidat.email])
161 msg.attach_alternative(texte_template.render(texte_html), "text/html")
162 msg.send()