from django.contrib import messages
from django.contrib.auth.models import User
from django.core.mail import send_mail
-from django.http import HttpResponse
+from django.core.urlresolvers import reverse
+from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, redirect, get_object_or_404
-from django.template import Context, RequestContext
+from django.template import Context, RequestContext, Template
+from django.core.mail import EmailMultiAlternatives
from forms import *
from models import *
-from project.recrutement import models as recr
from recrutement.workflow import grp_evaluateurs_recrutement
+from views import *
def index(request):
return render_to_response('recrutement/index.html', {},
RequestContext(request))
-def afficher_candidat(request):
- candidat = get_object_or_404(Candidat, id=request.GET.get('id'))
- var = {'candidat': candidat,}
- return render_to_response("recrutement/afficher_candidat.html", var,
- RequestContext(request))
-
-def affecter_evaluateurs_candidats(request):
- candidat_ids = request.GET.get('ids').split(',')
- candidats = Candidat.objects.filter(id__in=candidat_ids)
+def selectionner_template(request):
+ candidat_ids = request.GET.get('ids')
if request.method == "POST":
- form = EvaluateurForm(request.POST, candidats=candidats)
+ form = CandidatCourrielTemplateForm(request.POST)
if form.is_valid():
form.save()
- messages.add_message(request, messages.SUCCESS,
- "Les évaluateurs ont été affectés aux candidats.")
- return redirect("admin:recrutement_candidat_changelist")
+ courriel_template_id = form.get_template()
+
+ return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
+ "?ids_cand=%s&id_temp=%s" % (candidat_ids, courriel_template_id))
else:
- form = EvaluateurForm(candidats=candidats)
+ form = CandidatCourrielTemplateForm()
c = {'form' : form}
- return render_to_response("recrutement/affecter_evaluateurs.html",
+ return render_to_response("recrutement/selectionner_template.html",
Context(c), context_instance = RequestContext(request))
def envoyer_courriel_candidats(request):
- candidat_ids = request.GET.get('ids').split(',')
+ candidat_ids = request.GET.get('ids_cand').split(',')
candidats = Candidat.objects.filter(id__in=candidat_ids)
+ template_id = request.GET.get('id_temp')
+ template = CourrielTemplate.objects.get(id=template_id)
if request.method == "POST":
- form = CandidatCourrielForm(request.POST, candidats=candidats)
+ form = CandidatCourrielForm(request.POST, instance=template,
+ candidats=candidats, template=template)
+
if form.is_valid():
form.save()
+ courriel_template = CourrielTemplate()
+ courriel_template.nom_modele = template.nom_modele
+ courriel_template.sujet = form.data['sujet']
+ courriel_template.plain_text = form.data['plain_text']
+ courriel_template.html = form.data['html']
+ for cand in candidats:
+ send_templated_email(cand, courriel_template)
messages.add_message(request, messages.SUCCESS,
- "Les évaluateurs ont été affectés aux candidats.")
+ "Le email a été envoyé aux candidats.")
return redirect("admin:recrutement_candidat_changelist")
else:
- form = CandidatCourrielForm(candidats=candidats)
+ form = CandidatCourrielForm(candidats=candidats, template=template,
+ initial={'sujet': template.sujet,
+ 'plain_text': template.plain_text,
+ 'html': template.html})
c = {'form' : form}
return render_to_response("recrutement/envoyer_courriel_candidats.html",
Context(c), context_instance = RequestContext(request))
def postuler_appel_offre(request):
-
vars = dict()
offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id'))
candidat = Candidat()
instance=candidat, offre_emploi=offre_emploi)
piecesForm = CandidatPieceForm(request.POST, request.FILES,
instance=candidat)
- print form.errors
if form.is_valid() and piecesForm.is_valid():
offre = form.save()
piecesForm.instance = offre
piecesForm.save()
+
+ courriel_template = CourrielTemplate.objects.\
+ get(nom_modele='Confirmation postulation (automatique)')
+ emp.send_templated_email(candidat, courriel_template)
+
messages.add_message(request, messages.SUCCESS,
"Votre application à l'appel d'offre d'emploi a \
- été effectuée.")
-
- # Envoi d'un email de confirmation
- send_mail(u"Confirmation de postulation pour le poste \
- de " + offre_emploi.nom,
- u"Bonjour " + candidat.prenom + " " + candidat.nom +
- u", \nceci est un email pour vous confirmer que votre \
- postulation pour l'offre d'emploi: " +
- offre_emploi.nom + u" a été effectuée avec succès. Vous\
- devriez être contacté sous peu par l'AUF. \n\n Merci \
- pour votre intérêt envers l'AUF.",
- 'test@auf.org',
- [candidat.email], fail_silently=False)
-
+ été effectuée.")
return redirect("admin:recrutement_offreemploi_changelist")
else:
messages.add_message(request, messages.ERROR,
return render_to_response('recrutement/postuler_appel_offre.html', vars,
RequestContext(request))
+
+def affecter_evaluateurs_offre_emploi(request):
+ offre_emploi_ids = request.GET.get('ids').split(',')
+ offres_emploi = OffreEmploi.objects.filter(id__in=offre_emploi_ids)
+ if request.method == "POST":
+ form = EvaluateurForm(request.POST, offres_emploi=offres_emploi)
+ if form.is_valid():
+ form.save()
+ messages.add_message(request, messages.SUCCESS,
+ "Les évaluateurs ont été affectés aux offres d'emploi.")
+ return redirect("admin:recrutement_offreemploi_changelist")
+ else:
+ form = EvaluateurForm(offres_emploi=offres_emploi)
+
+ c = {'form' : form}
+ return render_to_response("recrutement/affecter_evaluateurs.html",
+ Context(c), context_instance = RequestContext(request))
+
+def send_templated_email(candidat, template):
+ # Sujet
+ sujet_template = Template(template.sujet)
+ dict_sujet = {"offre_emploi": candidat.offre_emploi.nom,}
+ sujet = Context(dict_sujet)
+ # Plain text
+ texte_template = Template(template.plain_text)
+ dict_texte = {"nom_candidat": candidat.nom,
+ "prenom_candidat": candidat.prenom,
+ "offre_emploi": candidat.offre_emploi.nom,
+ "genre_candidat": "Monsieur" if candidat.genre == "M" \
+ else "Madame",
+ }
+ texte = Context(dict_texte)
+ # HTML text
+ html_template = Template(template.html)
+ texte_html = Context(dict_texte)
+ msg = EmailMultiAlternatives(sujet_template.render(sujet),
+ texte_template.render(texte),
+ 'recrutement@auf.org',
+ [candidat.email])
+ msg.attach_alternative(texte_template.render(texte_html), "text/html")
+ msg.send()