# -*- encoding: utf-8 -*-
-from django.shortcuts import redirect, render_to_response, get_object_or_404
-from django.http import HttpResponse
+
from django.contrib import messages
-from django.template import Context, RequestContext
-from django.shortcuts import render_to_response, redirect
-from django.template import RequestContext
from django.contrib.auth.models import User
+from django.core.mail import send_mail
+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, 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'))
- pieces_jointes = CandidatPiece.objects.get(candidat=candidat)
- #import pdb;pdb.set_trace()
- var = {'candidat': candidat,
- 'pieces_jointes': pieces_jointes}
- return render_to_response("recrutement/afficher_candidat.html", var,
- RequestContext(request))
-
-def evaluer_candidat(request):
- candidat = get_object_or_404(Candidat, id=request.GET.get('id'))
-
- try:
- evaluateur = UserProfile.objects.get(user=request.user)
- except UserProfile.DoesNotExist:
- messages.add_message(request, messages.ERROR,
- "Vous ne pouvez pas évaluer ce candidat.")
- return redirect("admin:recrutement_candidat_changelist")
-
+def selectionner_template(request):
+ candidat_ids = request.GET.get('ids')
if request.method == "POST":
- candidat_evaluation = CandidatEvaluation()
- candidat_evaluation.candidat = candidat
- candidat_evaluation.evaluateur = evaluateur
- form = CandidatEvaluationForm(request.POST,
- instance=candidat_evaluation, candidat=candidat,
- evaluateur=evaluateur)
- if form.is_valid():
- form.save()
- messages.add_message(request, messages.SUCCESS,
- "Le commentaire et la note ont été affectés \
- au candidat.")
- return redirect("admin:recrutement_candidat_changelist")
- else:
- form = CandidatEvaluationForm(candidat=candidat, evaluateur=evaluateur)
+ form = CandidatCourrielTemplateForm(request.POST)
+ if form.is_valid():
+ form.save()
+ 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 = CandidatCourrielTemplateForm()
c = {'form' : form}
- return render_to_response("recrutement/evaluer_candidat.html", Context(c),
- context_instance = RequestContext(request))
+ return render_to_response("recrutement/selectionner_template.html",
+ Context(c), context_instance = RequestContext(request))
-def affecter_evaluateurs_candidats(request):
- candidat_ids = request.GET.get('ids').split(',')
+def envoyer_courriel_candidats(request):
+ 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 = EvaluateurForm(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 = EvaluateurForm(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/affecter_evaluateurs.html",
+ 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()
+ 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.")
+ é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()