Affichage dans la liste, la moyenne des notes de candidats
[auf_rh_dae.git] / project / recrutement / admin.py
index 721748c..3ff9049 100644 (file)
@@ -85,8 +85,8 @@ class EvaluateurInline(admin.TabularInline):
 
 class CandidatAdmin(VersionAdmin):
     date_hierarchy = 'date_creation'
 
 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", {
     list_filter = ('offre_emploi', )
     fieldsets = (
         ("Offre d'emploi", {
@@ -113,7 +113,7 @@ class CandidatAdmin(VersionAdmin):
         EvaluateurInline,
     ]
 
         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)
     # 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'
 
                 "?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 \
     # É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)
 
         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)
         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', )
 
 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(OffreEmploi, OffreEmploiAdmin)
 admin.site.register(Candidat, CandidatAdmin)
-admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
 admin.site.register(UserProfile, EvaluateurAdmin)
 admin.site.register(UserProfile, EvaluateurAdmin)