Affichage dans la liste, la moyenne des notes de candidats
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Thu, 16 Jun 2011 15:18:08 +0000 (11:18 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Thu, 16 Jun 2011 15:18:08 +0000 (11:18 -0400)
project/recrutement/admin.py
project/recrutement/views.py
project/urls.py

index 721748c..3ff9049 100644 (file)
@@ -85,8 +85,8 @@ class EvaluateurInline(admin.TabularInline):
 
 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", {
@@ -113,7 +113,7 @@ class CandidatAdmin(VersionAdmin):
         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)
@@ -122,15 +122,6 @@ class CandidatAdmin(VersionAdmin):
                 "?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 \
@@ -178,12 +169,27 @@ class CandidatAdmin(VersionAdmin):
         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', )
@@ -295,5 +301,4 @@ class CandidatEvaluationAdmin(VersionAdmin):
 
 admin.site.register(OffreEmploi, OffreEmploiAdmin)
 admin.site.register(Candidat, CandidatAdmin)
-admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
 admin.site.register(UserProfile, EvaluateurAdmin)
index 54bea7d..1a56437 100755 (executable)
@@ -45,41 +45,6 @@ def evaluer_candidat(request):
     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)
index 70c5a7b..f903563 100644 (file)
@@ -24,8 +24,6 @@ urlpatterns = patterns(
     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')),