class CandidatAdmin(VersionAdmin):
date_hierarchy = 'date_creation'
- list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions',
- 'evaluer_candidat', )
+ list_display = ('nom', 'prenom', 'offre_emploi','statut',
+ 'voir_offre_emploi', 'evaluer_candidat', 'calculer_moyenne')
list_filter = ('offre_emploi', )
fieldsets = (
("Offre d'emploi", {
EvaluateurInline,
]
- actions = ['affecter_candidats_evaluateur', 'evaluer_plusieurs_candidats']
+ actions = ['affecter_candidats_evaluateur']
# Affecter un évaluateurs à des candidats
def affecter_candidats_evaluateur(modeladmin, obj, candidats):
selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
"?ids=%s" % (",".join(selected)))
affecter_candidats_evaluateur.short_description = u'Affecter évaluateur'
- # Évaluer plusieurs candidats
- def evaluer_plusieurs_candidats(modeladmin, obj, candidats):
- selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
-
- return HttpResponseRedirect(reverse('evaluer_candidats')+
- "?ids=%s" % (",".join(selected)))
- evaluer_plusieurs_candidats.short_description = u'Évaluer plusieurs \
- candidats'
-
# Évaluer un candidat
def evaluer_candidat(self, obj):
return "<a href='%s?id=%s'>Évaluer le candidat \
ids = [c.id for c in user.candidats.all()]
return qs.select_related('candidats').filter(id__in=ids)
- def _actions(self, obj):
+ # Voir l'offre d'emploi
+ def voir_offre_emploi(self, obj):
return "<a href='%s?id=%s'>Voir l'offre d'emploi</a> \
" % (reverse('admin:recrutement_offreemploi_changelist'),
obj.offre_emploi.id)
- _actions.allow_tags = True
- _actions.short_description = "Offre d'emploi"
+ voir_offre_emploi.allow_tags = True
+ voir_offre_emploi.short_description = "Offre d'emploi"
+
+ #Calculer la moyenne des notes
+ def calculer_moyenne(self, obj):
+ evaluations = CandidatEvaluation.objects.filter(candidat=obj)
+
+ notes = [evaluation.note for evaluation in evaluations.all() if evaluation.note is not None]
+ #import pdb;pdb.set_trace()
+ if len(notes) > 0:
+ moyenne_votes = float(sum(notes)) / len(notes)
+ else:
+ moyenne_votes = 0
+ return moyenne_votes
+ calculer_moyenne.allow_tags = True
+ calculer_moyenne.short_description = "Moyenne des notes"
class CandidatPieceAdmin(admin.ModelAdmin):
list_display = ('nom', 'candidat', )
admin.site.register(OffreEmploi, OffreEmploiAdmin)
admin.site.register(Candidat, CandidatAdmin)
-admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
admin.site.register(UserProfile, EvaluateurAdmin)
return render_to_response("recrutement/evaluer_candidat.html", Context(c),
context_instance = RequestContext(request))
-# TODO: Semblable à evaluer_candidat, possibilité de le mettre dans la
-# même fonction?
-def evaluer_candidats(request):
- candidat_ids = request.GET.get('ids').split(',')
- candidats = Candidat.objects.filter(id__in=candidat_ids)
-
- try:
- evaluateur = UserProfile.objects.get(user=request.user)
- except UserProfile.DoesNotExist:
- messages.add_message(request, messages.ERROR,
- "Vous ne pouvez pas évaluer un candidat.")
- return redirect("admin:recrutement_candidat_changelist")
-
- if request.method == "POST":
- for c in candidats:
- candidat_evaluation = CandidatEvaluation()
- candidat_evaluation.candidat = c
- candidat_evaluation.evaluateur = evaluateur
- form = CandidatEvaluationForm(request.POST,
- instance=candidat_evaluation, candidat=c,
- evaluateur=evaluateur)
- if form.is_valid():
- form.save()
- messages.add_message(request, messages.SUCCESS,
- "Le commentaire et la note ont été affectés \
- aux candidats.")
-
- return redirect("admin:recrutement_candidat_changelist")
- else:
- form = CandidatEvaluationForm(candidat=None, evaluateur=evaluateur)
-
- c = {'form' : form}
- return render_to_response("recrutement/evaluer_candidat.html", Context(c),
- context_instance = RequestContext(request))
-
def affecter_evaluateurs_candidats(request):
candidat_ids = request.GET.get('ids').split(',')
candidats = Candidat.objects.filter(id__in=candidat_ids)
url(r'^recrutement/pieces/$', 'recrutement.views.postuler_appel_offre', name='pieces'),
url(r'^recrutement/evaluer_candidat/$',
'recrutement.views.evaluer_candidat', name='evaluer_candidat'),
- url(r'^recrutement/evaluer_candidats/$',
- 'recrutement.views.evaluer_candidats', name='evaluer_candidats'),
url(r'^recrutement/postuler_appel_offre/$',
'recrutement.views.postuler_appel_offre', name='postuler_appel_offre'),
(r'^', include('project.rh.urls')),