Pour refactoring
"""
+
+class ProxyEvaluateur(Evaluateur.offres_emploi.through):
+ """
+ Ce proxy sert uniquement dans l'admin à disposer d'un libellé
+ plus ergonomique.
+ """
+ class Meta:
+ proxy = True
+ verbose_name = "évaluateur"
+
+class EvaluateurInline(admin.TabularInline):
+ model = ProxyEvaluateur
+ fields = ('evaluateur',)
+ extra = 1
+
class OffreEmploiAdmin(VersionAdmin):
date_hierarchy = 'date_creation'
list_display = ('nom', 'resume', 'date_limite', 'region', 'statut',
list_filter = ('statut', 'est_affiche', )
actions = ['affecter_evaluateurs_offre_emploi', ]
form = OffreEmploiForm
+ inlines = [EvaluateurInline, ]
def get_actions(self, request):
actions = super(OffreEmploiAdmin, self).get_actions(request)
return True
return False
- """class ProxyEvaluateur(Evaluateur.candidats.through):
-
- Ce proxy sert uniquement dans l'admin à disposer d'un libellé
- plus ergonomique.
-
- class Meta:
- proxy = True
- verbose_name = "évaluateur"
- """
class CandidatPieceInline(admin.TabularInline):
model = CandidatPiece
fields = ('candidat', 'nom', 'path',)
return self.readonly_fields+('evaluateur', 'note', 'commentaire')
return self.readonly_fields
-
class CandidatAdmin(VersionAdmin):
date_hierarchy = 'date_creation'
list_display = ('nom', 'prenom', 'offre_emploi','statut',
from auf.django.emploi import models as emploi
from auf.django.emploi import forms as emploiForms
+from project.recrutement.models import Evaluateur, CandidatEvaluation, \
+ CourrielTemplate
+from project.recrutement.views import *
STATUS_OK = 200
instance=cand, offre_emploi=offre_emploi)
piecesForm = emploiForms.CandidatPieceForm(self.request.POST, self.request.FILES,
instance=cand)
+
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)')
- send_templated_email(candidat, courriel_template)
+ get(id=1)
+ send_templated_email(cand, courriel_template)
"""
+ evaluateurs = offre_emploi.evaluateurs.all()
+ for evaluateur in evaluateurs:
+ candidat_evaluation = CandidatEvaluation()
+ candidat_evaluation.candidat = cand
+ candidat_evaluation.evaluateur = evaluateur
+ candidat_evaluation.save()
+
return api_return(STATUS_OK)
else:
messages.add_message(self.request, messages.ERROR,
def __unicode__(self):
return '%s [%s] - View' % (self.nom, self.id)
-class ProxyCandidat(Candidat):
+class ProxyCandidat(emploi.Candidat):
class Meta:
proxy = True
verbose_name = "Candidat (visualisation)"
def __unicode__(self):
return '%s %s [%s]' % (self.prenom, self.nom, self.id)
-
class Evaluateur(models.Model):
user = models.ForeignKey(User, unique=True, verbose_name="Évaluateur")
offres_emploi = models.ManyToManyField(emploi.OffreEmploi,
return '%s %s' % (self.user.first_name, self.user.last_name)
class CandidatEvaluation(models.Model):
- candidat = models.ForeignKey(Candidat, db_column='candidat',
+ candidat = models.ForeignKey(emploi.Candidat, db_column='candidat',
related_name='+',)
evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur',
related_name='+', verbose_name='Évaluateur')
from forms import *
from models import *
from recrutement.workflow import grp_evaluateurs_recrutement
-from auf.django.emploi import views as emp
+from views import *
def index(request):
return render_to_response('recrutement/index.html', {},
courriel_template = CourrielTemplate.objects.\
get(nom_modele='Confirmation postulation (automatique)')
- send_templated_email(candidat, courriel_template)
+ emp.send_templated_email(candidat, courriel_template)
messages.add_message(request, messages.SUCCESS,
"Votre application à l'appel d'offre d'emploi a \
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()
self.request = request
def offre_emploi_liste(self):
- url = "http://127.0.0.1:8080/api/offre_emploi_liste/"
+ url = "http://127.0.0.1:8000/api/offre_emploi_liste/"
r = req(url)
liste_json = r.body_string()
liste_offres = simplejson.loads(liste_json)
return obj_offres_emploi
def offre_emploi(self, offre_id):
- url = "http://127.0.0.1:8080/api/offre_emploi/?id=%s"
+ url = "http://127.0.0.1:8000/api/offre_emploi/?id=%s"
r = req(url % (offre_id))
offre_json = r.body_string()
offre_dict = simplejson.loads(offre_json)
return obj_offres_emploi
def candidat_add(self, offre_id):
- url = "http://127.0.0.1:8080/api/candidat_add/?id=%s" % (offre_id)
+ url = "http://127.0.0.1:8000/api/candidat_add/?id=%s" % (offre_id)
return redirect(url)
class Meta:
db_table = 'emploi_candidat'
- def save(self, *args, **kwargs):
- """
- Créer automatiquement des CandidatEvaluation, si des évaluateurs sont
- déjà assignés à des offres d'emploi
- """
- evaluateurs = OffreEmploi.objects.filter(id=self.offre_emploi.id)
-
- for evaluateur in evaluateurs:
- candidat_evaluation = CandidatEvaluation()
- candidat_evaluation.candidat = self
- candidat_evaluation.evaluateur = evaluateur
- candidat_evaluation.save()
- super(Candidat, self).save(*args, **kwargs)
-
-
def pieces_jointes(self):
return CandidatPiece.objects.filter(candidat=self)
pieces_jointes.allow_tags = True
+++ /dev/null
-# -*- encoding: utf-8 -*-
-
-from django.contrib import messages
-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 auf.django.emploi import models
-from auf.django.emploi import forms
-
-def postuler_appel_offre(request):
- vars = dict()
- offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id'))
- candidat = Candidat()
- candidat.offre_emploi = offre_emploi
-
- if request.method == "POST":
- form = PostulerOffreEmploiForm(request.POST,
- instance=candidat, offre_emploi=offre_emploi)
- piecesForm = CandidatPieceForm(request.POST, request.FILES,
- instance=candidat)
- 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)')
- send_templated_email(candidat, courriel_template)
-
- messages.add_message(request, messages.SUCCESS,
- "Votre application à l'appel d'offre d'emploi a \
- été effectuée.")
- return redirect("admin:recrutement_offreemploi_changelist")
- else:
- messages.add_message(request, messages.ERROR,
- 'Il y a des erreurs dans le formulaire.')
- else:
- form = PostulerOffreEmploiForm(instance=candidat,
- offre_emploi=offre_emploi)
- piecesForm = CandidatPieceForm(instance=candidat)
-
- vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, ))
-
- return render_to_response('recrutement/postuler_appel_offre.html', vars,
- 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()