Commit | Line | Data |
---|---|---|
184b84de NBV |
1 | # -*- encoding: utf-8 -*- |
2 | ||
3 | from django.contrib import messages | |
4 | from django.shortcuts import render_to_response, redirect, get_object_or_404 | |
5 | from django.template import Context, RequestContext, Template | |
6 | from django.core.mail import EmailMultiAlternatives | |
7 | ||
6603472c NBV |
8 | from auf.django.emploi import models |
9 | from auf.django.emploi import forms | |
184b84de NBV |
10 | |
11 | def postuler_appel_offre(request): | |
12 | vars = dict() | |
13 | offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id')) | |
14 | candidat = Candidat() | |
15 | candidat.offre_emploi = offre_emploi | |
16 | ||
17 | if request.method == "POST": | |
18 | form = PostulerOffreEmploiForm(request.POST, | |
19 | instance=candidat, offre_emploi=offre_emploi) | |
20 | piecesForm = CandidatPieceForm(request.POST, request.FILES, | |
21 | instance=candidat) | |
22 | if form.is_valid() and piecesForm.is_valid(): | |
23 | offre = form.save() | |
24 | piecesForm.instance = offre | |
25 | piecesForm.save() | |
26 | ||
27 | courriel_template = CourrielTemplate.objects.\ | |
28 | get(nom_modele='Confirmation postulation (automatique)') | |
29 | send_templated_email(candidat, courriel_template) | |
30 | ||
31 | messages.add_message(request, messages.SUCCESS, | |
32 | "Votre application à l'appel d'offre d'emploi a \ | |
33 | été effectuée.") | |
34 | return redirect("admin:recrutement_offreemploi_changelist") | |
35 | else: | |
36 | messages.add_message(request, messages.ERROR, | |
37 | 'Il y a des erreurs dans le formulaire.') | |
38 | else: | |
39 | form = PostulerOffreEmploiForm(instance=candidat, | |
40 | offre_emploi=offre_emploi) | |
41 | piecesForm = CandidatPieceForm(instance=candidat) | |
42 | ||
43 | vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, )) | |
44 | ||
45 | return render_to_response('recrutement/postuler_appel_offre.html', vars, | |
46 | RequestContext(request)) | |
47 | ||
48 | def send_templated_email(candidat, template): | |
49 | # Sujet | |
50 | sujet_template = Template(template.sujet) | |
51 | dict_sujet = {"offre_emploi": candidat.offre_emploi.nom,} | |
52 | sujet = Context(dict_sujet) | |
53 | # Plain text | |
54 | texte_template = Template(template.plain_text) | |
55 | dict_texte = {"nom_candidat": candidat.nom, | |
56 | "prenom_candidat": candidat.prenom, | |
57 | "offre_emploi": candidat.offre_emploi.nom,} | |
58 | texte = Context(dict_texte) | |
59 | # HTML text | |
60 | html_template = Template(template.html) | |
61 | texte_html = Context(dict_texte) | |
62 | msg = EmailMultiAlternatives(sujet_template.render(sujet), | |
63 | texte_template.render(texte), | |
64 | 'recrutement@auf.org', | |
65 | [candidat.email]) | |
66 | msg.attach_alternative(texte_template.render(texte_html), "text/html") | |
67 | msg.send() |