1751: Voir les évaluations et les évaluateurs d'un candidat lors de la visualisation...
[auf_rh_dae.git] / project / recrutement / admin.py
index 762bdc7..c52324c 100644 (file)
@@ -8,6 +8,7 @@ from django.core.files.storage import default_storage
 
 from reversion.admin import VersionAdmin
 from datamaster_modeles.models import Employe, Implantation, Region
+from django.forms.models import BaseInlineFormSet
 
 from recrutement.models import *
 from recrutement.workflow import grp_administrateurs_recrutement,\
@@ -116,18 +117,6 @@ class ProxyOffreEmploiAdmin(OffreEmploiAdmin):
             return True
         return False   
 
-class ProxyCandidatPiece(CandidatPiece):
-    class Meta:
-        proxy = True
-        verbose_name = "pièce jointe"
-        verbose_name_plural = "pièces jointes"
-
-class CandidatPieceInline(admin.TabularInline):
-    model = ProxyCandidatPiece
-    fields = ('candidat', 'nom', 'path',)
-    extra = 1
-    max_num = 3
-
 class ProxyEvaluateur(Evaluateur.candidats.through):
     """
     Ce proxy sert uniquement dans l'admin à disposer d'un libellé
@@ -137,11 +126,42 @@ class ProxyEvaluateur(Evaluateur.candidats.through):
         proxy = True
         verbose_name = "évaluateur"
 
+class CandidatPieceInline(admin.TabularInline):
+    model = CandidatPiece
+    fields = ('candidat', 'nom', 'path',)
+    extra = 1
+    max_num = 3
+
 class EvaluateurInline(admin.TabularInline):
     model = ProxyEvaluateur
     fields = ('evaluateur',)
     extra = 1
 
+
+class CandidatEvaluationInlineFormSet(BaseInlineFormSet):
+    """
+    Empêche la suppression d'une évaluation pour le CandidatEvaluationInline
+    """
+    def __init__(self, *args, **kwargs):
+        super(CandidatEvaluationInlineFormSet, self).__init__(*args, **kwargs)
+        self.can_delete = False 
+
+class CandidatEvaluationInline(admin.TabularInline):
+    model = CandidatEvaluation
+    fields = ('evaluateur', 'note', 'commentaire')
+    max_num = 0
+    extra = 0
+    formset = CandidatEvaluationInlineFormSet
+    
+    def get_readonly_fields(self, request, obj=None):
+        """
+        Empêche la modification des évaluations
+        """
+        if obj:
+            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',
@@ -171,6 +191,7 @@ class CandidatAdmin(VersionAdmin):
     inlines = [
         CandidatPieceInline,
         EvaluateurInline,
+        CandidatEvaluationInline,
     ]
 
     actions = ['affecter_candidats_evaluateur', 'envoyer_courriel_candidats']