Début du tableau de bord des évaluations pour les Évaluateurs
[auf_rh_dae.git] / project / recrutement / admin.py
index ff3d55b..0c47c9a 100644 (file)
@@ -66,16 +66,16 @@ class ProxyOffreEmploiAdmin(OffreEmploiAdmin):
                         'debut_affectation', 'lieu_affectation', 'nom',
                         'resume', 'date_limite', 'region')
     fieldsets = (
-        (None, {
+        ('Nom', {
             'fields': ('nom', )        
         }),
-        (None, {
+        ('Description générale', {
             'fields': ('poste', 'resume','description', 'date_limite', )        
         }),
-        (None, {
+        ('Coordonnées', {
             'fields': ('lieu_affectation', 'bureau', 'region', )
         }),
-        (None, {
+        ('Autre', {
             'fields': ('debut_affectation', 'duree_affectation',
                         'renumeration', )
         }),
@@ -125,12 +125,13 @@ class ProxyEvaluateur(Evaluateur.candidats.through):
 
 class EvaluateurInline(admin.TabularInline):
     model = ProxyEvaluateur
+    fields = ('evaluateur',)
     extra = 1
 
 class CandidatAdmin(VersionAdmin):
     date_hierarchy = 'date_creation'
     list_display = ('nom', 'prenom', 'offre_emploi','statut',
-                    'voir_offre_emploi', 'evaluer_candidat', #'note_evaluateur',
+                    'voir_offre_emploi', #'note_evaluateur',
                     'calculer_moyenne', 'afficher_candidat',)
     list_filter = ('offre_emploi', )
     fieldsets = (
@@ -181,20 +182,20 @@ class CandidatAdmin(VersionAdmin):
         return "<a href='%s?id=%s'>Évaluer le candidat \
                 </a>" % (reverse('evaluer_candidat'), obj.id)
     evaluer_candidat.allow_tags = True    
-    evaluer_candidat.short_description = 'Évaluer'
+    evaluer_candidat.short_description = 'Note du candidat'
 
     # Afficher un candidat
     def afficher_candidat(self, obj):
-        return "<a href='%s?id=%s'>Voir le candidat \
-                </a>" % (reverse('recrutement_proxycandidat_change'), obj.id)
+        return "<a href='%s'>Voir le candidat </a>" \
+            % (reverse('admin:recrutement_proxycandidat_change', args=(obj.id,)))
     afficher_candidat.allow_tags = True    
     afficher_candidat.short_description = u'Afficher les détails du candidat'
 
     # 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'>Voir l'offre d'emploi</a>" % \
+        (reverse('admin:recrutement_proxyoffreemploi_change', 
+                    args=(obj.offre_emploi.id,)))
     voir_offre_emploi.allow_tags = True
     voir_offre_emploi.short_description = "Afficher l'offre d'emploi"
 
@@ -276,9 +277,8 @@ class CandidatAdmin(VersionAdmin):
 
 class ProxyCandidatAdmin(CandidatAdmin):
     #TODO: init boucler sur les fields pour le readonly
-    list_display = ('nom', 'prenom', 'offre_emploi','statut',
-                    'voir_offre_emploi', 'evaluer_candidat', #'note_evaluateur',
-                    'calculer_moyenne',)
+    list_display = ('nom', 'prenom','statut', 'offre_emploi',
+                    'voir_offre_emploi', 'evaluer_candidat', 'afficher_candidat')#'note_evaluateur',)
     readonly_fields = ('statut', 'offre_emploi', 'prenom', 'nom',
                         'genre', 'nationalite', 'date_naissance',
                         'situation_famille', 'nombre_dependant', 'telephone',
@@ -317,13 +317,6 @@ class ProxyCandidatAdmin(CandidatAdmin):
             return True
         return False   
 
-    def voir_offre_emploi(self, obj):
-        return "<a href='%s?id=%s'>Voir l'offre d'emploi</a> \
-                " % (reverse('admin:recrutement_proxyoffreemploi_changelist'), 
-                obj.offre_emploi.id)
-    voir_offre_emploi.allow_tags = True
-    voir_offre_emploi.short_description = "Afficher l'offre d'emploi"
-
 class CandidatPieceAdmin(admin.ModelAdmin):
     list_display = ('nom', 'candidat', )
 
@@ -343,7 +336,7 @@ class CandidatPieceAdmin(admin.ModelAdmin):
 class EvaluateurAdmin(VersionAdmin):
     fieldsets = (
         (None, {'fields': ('user', )}),
-        (None, {'fields': ('candidats',)}),
+        #(None, {'fields': ('candidats',)}),
     )
 
     # Peut-être qu'on peut enlever cette def, à cause des permissions
@@ -352,7 +345,7 @@ class EvaluateurAdmin(VersionAdmin):
         Affiche la liste d'évaluateur que si le user connecté 
         possède un Evaluateur
         """
-        user_groupes = obj.user.groups.all()
+        user_groupes = request.user.groups.all()
         if grp_drh_recrutement in user_groupes:
            return self.model._default_manager.get_query_set() 
 
@@ -362,13 +355,30 @@ class AdministrateurRegionalAdmin(VersionAdmin):
     pass
 
 class CandidatEvaluationAdmin(VersionAdmin):
-    list_display = ('candidat', 'evaluateur', 'note', 'commentaire', 'date', )
+    list_display = ('candidat', 'offre_emploi_candidat', 'evaluateur', 'note', 
+                    'commentaire',  'date',)
+
+    def offre_emploi_candidat(self, obj):
+        return obj.candidat.offre_emploi
+
+    def queryset(self, request):
+        evaluateur = Evaluateur.objects.get(user=request.user)
+        candidats = Candidat.objects.filter(evaluateurs=evaluateur) 
+        candidats_evaluations = CandidatEvaluation.objects.\
+                                filter(evaluateur=evaluateur, 
+                                candidat__in=candidats)
+        qs = self.model._default_manager.get_query_set()
+        candidats_evaluations_ids = [ce.id for ce in \
+                                        candidats_evaluations.all()]
+        return qs.select_related('offre_emploi')#.\
+        #filter(id__in=candidats_evaluations_ids)
 
 class CourrielTemplateAdmin(VersionAdmin):
     pass
 
 admin.site.register(OffreEmploi, OffreEmploiAdmin)
 admin.site.register(Candidat, CandidatAdmin)
+admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
 admin.site.register(CourrielTemplate, CourrielTemplateAdmin)
 admin.site.register(Evaluateur, EvaluateurAdmin)
 admin.site.register(AdministrateurRegional, AdministrateurRegionalAdmin)