Création à la volée des évaluations à chaque fois qu'on affiche la liste
authorEric Mc Sween <eric.mcsween@auf.org>
Fri, 7 Feb 2014 21:30:11 +0000 (16:30 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Fri, 7 Feb 2014 21:30:11 +0000 (16:30 -0500)
project/recrutement/admin.py
project/recrutement/models.py

index cd20147..c2b14aa 100644 (file)
@@ -864,13 +864,23 @@ class MesCandidatEvaluationAdmin(CandidatEvaluationAdmin):
 
     def queryset(self, request):
         qs = self.model._default_manager.get_query_set() \
-                .select_related('offre_emploi')
+            .select_related('offre_emploi')
         evaluateur = Evaluateur.objects.get(user=request.user)
-        candidats_evaluations = \
-            CandidatEvaluation.objects.filter(evaluateur=evaluateur,
-                    candidat__statut__in=('REC', ))
-        candidats_evaluations_ids = [ce.id for ce in candidats_evaluations]
-        return qs.filter(id__in=candidats_evaluations_ids)
+
+        # XXX: Pas l'idéal, mais on doit créer les objets CandidatEvaluation
+        # ici pour garder la liste à jour. Idéalement, il vaudrait peut-être
+        # mieux utiliser directement les objets Candidat.
+        for candidat in Candidat.objects .filter(
+            offre_emploi__offreemploievaluateur__evaluateur=evaluateur,
+        ).exclude(evaluations__evaluateur=evaluateur):
+            print candidat, candidat.offre_emploi
+            CandidatEvaluation.objects.get_or_create(
+                candidat=candidat, evaluateur=evaluateur
+            )
+
+        return qs.filter(
+            evaluateur=evaluateur, candidat__statut__in=('NOUV', 'REC')
+        )
 
 
 class OffreEmploiEvaluateurAdmin(BaseAdmin):
index 10d8175..01a24a5 100644 (file)
@@ -122,15 +122,6 @@ class OffreEmploiEvaluateur(models.Model):
     def __unicode__(self):
         return u"%s - %s" % (self.offre_emploi, self.evaluateur)
 
-    def save(self):
-
-        if self.pk is None:
-            candidats = Candidat.objects.filter(offre_emploi=self.offre_emploi)
-            for candidat in candidats:
-                candidat_evaluation, created = CandidatEvaluation.objects.get_or_create(candidat=candidat, evaluateur=self.evaluateur)
-
-        super(OffreEmploiEvaluateur, self).save()
-
     def delete(self):
         candidats = Candidat.objects.filter(offre_emploi=self.offre_emploi)
         for candidat in candidats: