1548: Un évaluateur doit pouvoir éditer/évaluer un candidat qui lui est assigné
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Wed, 8 Jun 2011 16:55:04 +0000 (12:55 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Wed, 8 Jun 2011 16:55:04 +0000 (12:55 -0400)
1617: Correction du bug

project/recrutement/admin.py
project/recrutement/forms.py
project/recrutement/models.py
project/recrutement/views.py

index 8472adc..a0b42bd 100644 (file)
@@ -76,8 +76,10 @@ class CandidatAdmin(VersionAdmin):
 
     # Affecter un évaluateurs à des candidats
     actions = ['affecter_candidats_evaluateur']
-    def affecter_candidats_evaluateur(modeladmin, obj):
+    def affecter_candidats_evaluateur(modeladmin, obj, candidats):
+        
         selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+
         return HttpResponseRedirect(reverse('affecter_evaluateurs_candidats')+
                 "?ids=%s" % (",".join(selected)))
     affecter_candidats_evaluateur.short_description = "Affecter evaluateur"
@@ -96,8 +98,11 @@ class CandidatAdmin(VersionAdmin):
         modèles de Region, il existe plusieurs boucles, ce qui conduit à la 
         génération d'une requête infinie.
         """
+
         qs = self.model._default_manager.get_query_set()
-        return qs.select_related('offre_emploi')
+        user = get_object_or_404(User,user=obj.user)
+        ids = [c.id for c in user.candidats.all()]
+        return qs.select_related('candidats').filter(id__in=ids)
 
     def _actions(self, obj):
         return "<a href='%s?id=%s'>Voir l'offre d'emploi</a> \
index dddb60c..a978d21 100644 (file)
@@ -45,8 +45,7 @@ class CandidatPieceForm(inlineformset_factory(recr.Candidat, recr.CandidatPiece)
 
 class PostulerOffreEmploiForm(ModelForm):
     def __init__(self, *args, **kwargs):
-        self.offre_emploi = kwargs.pop('offre_emploi')   
-        #import pdb;pdb.set_trace()   
+        self.offre_emploi = kwargs.pop('offre_emploi')      
         super(PostulerOffreEmploiForm, self).__init__(*args, **kwargs)
 
     def save(self):
index c0f103f..ede4f1e 100755 (executable)
@@ -120,10 +120,14 @@ class CandidatPiece(models.Model):
 
 class User(models.Model):
     user = models.ForeignKey("auth.User", unique=True)
-    candidats = models.ManyToManyField(Candidat, verbose_name='Candidats', blank=True, null=True,)
+    candidats = models.ManyToManyField(Candidat, verbose_name='Candidats', 
+                blank=True, null=True,related_name="evaluateurs")
     regions = models.ManyToManyField(ref.Region, 
                            verbose_name="Régions", )
 
+    def __unicode__(self):
+        return '%s %s' % (self.user.first_name, self.user.last_name)
+
 User.profile = property(lambda u: User.objects.get_or_create(user=u)[0])
 
 class CandidatEvaluation(models.Model):
index c3b9265..7f14a9c 100755 (executable)
@@ -16,8 +16,8 @@ def index(request):
                                 RequestContext(request))
 
 def evaluer_candidat(request):
+    
     candidat = get_object_or_404(Candidat, id__in=request.GET.get('id'))
-
     if request.method == "POST":
         candidat_evaluation = CandidatEvaluation()
         candidat_evaluation.candidat = candidat
@@ -38,7 +38,7 @@ def evaluer_candidat(request):
 
 def affecter_evaluateurs_candidats(request):
     candidat_ids = request.GET.get('ids').split(',')
-    candidats = get_object_or_404(Candidat, id__in=candidat_ids)
+    candidats = Candidat.objects.filter(id__in=candidat_ids)
     if request.method == "POST":
         form = EvaluateurForm(request.POST, candidats=candidats)
         if form.is_valid():
@@ -60,9 +60,10 @@ def postuler_appel_offre(request):
     candidat.offre_emploi = offre_emploi
 
     if request.method == "POST":
-        form = PostulerOffreEmploiForm(request.POST, request.FILES, instance=candidat, offre_emploi=offre_emploi)
-        piecesForm = CandidatPieceForm(request.POST, request.FILES, instance=candidat)
-        #import pdb;pdb.set_trace()
+        form = PostulerOffreEmploiForm(request.POST, request.FILES,
+                 instance=candidat, offre_emploi=offre_emploi)
+        piecesForm = CandidatPieceForm(request.POST, request.FILES,
+                    instance=candidat)
         if form.is_valid() and piecesForm.is_valid():
             form.save()
             messages.add_message(request, messages.SUCCESS, 
@@ -70,7 +71,8 @@ def postuler_appel_offre(request):
                             été effectuée.")
             return redirect("admin:recrutement_offreemploi_changelist")
     else:
-        form = PostulerOffreEmploiForm(instance=candidat, offre_emploi=offre_emploi)
+        form = PostulerOffreEmploiForm(instance=candidat,
+                offre_emploi=offre_emploi)
         piecesForm = CandidatPieceForm(instance=candidat)
 
     vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, ))