1751: Voir les évaluations et les évaluateurs d'un candidat lors de la visualisation...
authorNilovna Bascunan-Vasquez <contact@nilovna.com>
Thu, 28 Jul 2011 14:59:53 +0000 (10:59 -0400)
committerNilovna Bascunan-Vasquez <contact@nilovna.com>
Thu, 28 Jul 2011 14:59:53 +0000 (10:59 -0400)
project/recrutement/admin.py
project/recrutement/models.py
project/recrutement/templates/admin/recrutement/proxycandidat/change_form.html

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']
index 92da7d8..979f431 100755 (executable)
@@ -98,7 +98,6 @@ class Evaluateur(models.Model):
         Assigner automatiquement l'évaluateurs d'une offre d'emploi à un 
         nouveau candidat.
         """
-        import pdb;pdb.set_trace()
         self.user.groups.add(grp_evaluateurs_recrutement)
         super(Evaluateur, self).save(*args, **kwargs)
     
@@ -121,13 +120,17 @@ class AdministrateurRegional(models.Model):
     def __unicode__(self):
         return '%s %s' % (self.user.first_name, self.user.last_name)
 
+#class ProxyCandidatEvaluation(CandidatEvaluation):
+#    class Meta:
+#        proxy = True
+
 class CandidatEvaluation(models.Model):
     candidat = models.ForeignKey(Candidat, db_column='candidat', 
                 related_name='+',) 
     evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur', 
                     related_name='+', verbose_name='Évaluateur') 
     note = models.IntegerField(choices=NOTES, blank=True, null=True)
-    commentaire = models.TextField(null=True, blank=True)
+    commentaire = models.TextField(null=True, blank=True, default='Aucun')
     date = models.DateField(auto_now_add=True,
                         help_text=HELP_TEXT_FORMAT_DATE, )  
 
index 5073e3f..bdc3016 100644 (file)
@@ -55,8 +55,8 @@
     <h2>Pièces jointes</h2>
     {% for p in original.pieces_jointes %}
         <div class="form-row">
-            <label>{{ p.nom }}:</label>
-            <p><a href="{{ p.path.url }}">Voir</a></p>
+            <label>{{ p.get_nom_display }}:</label>
+            <p><a href="{{ p.path.url }}">{{ p.path.url }}</a></p>
         </div>
     {% endfor %}
 </fieldset>