1635: Évaluer plusieurs candidats simultanément
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Wed, 15 Jun 2011 19:58:15 +0000 (15:58 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Wed, 15 Jun 2011 19:58:15 +0000 (15:58 -0400)
project/recrutement/admin.py
project/recrutement/views.py
project/urls.py

index bc1810b..721748c 100644 (file)
@@ -113,16 +113,24 @@ class CandidatAdmin(VersionAdmin):
         EvaluateurInline,
     ]
 
+    actions = ['affecter_candidats_evaluateur', 'evaluer_plusieurs_candidats']
     # Affecter un évaluateurs à des candidats
-    actions = ['affecter_candidats_evaluateur']
-    def affecter_candidats_evaluateur(modeladmin, obj, candidats):
-        
+    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 = u'Affecter évaluateur'
 
+    # Évaluer plusieurs candidats
+    def evaluer_plusieurs_candidats(modeladmin, obj, candidats):
+        selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+
+        return HttpResponseRedirect(reverse('evaluer_candidats')+
+                "?ids=%s" % (",".join(selected)))
+    evaluer_plusieurs_candidats.short_description = u'Évaluer plusieurs \
+                                                    candidats'
+
     # Évaluer un candidat
     def evaluer_candidat(self, obj):
         return "<a href='%s?id=%s'>Évaluer le candidat \
@@ -287,4 +295,5 @@ class CandidatEvaluationAdmin(VersionAdmin):
 
 admin.site.register(OffreEmploi, OffreEmploiAdmin)
 admin.site.register(Candidat, CandidatAdmin)
+admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
 admin.site.register(UserProfile, EvaluateurAdmin)
index 1a56437..54bea7d 100755 (executable)
@@ -45,6 +45,41 @@ def evaluer_candidat(request):
     return render_to_response("recrutement/evaluer_candidat.html", Context(c),
                 context_instance = RequestContext(request))
 
+# TODO: Semblable à evaluer_candidat, possibilité de le mettre dans la
+#       même fonction?
+def evaluer_candidats(request):
+    candidat_ids = request.GET.get('ids').split(',')
+    candidats = Candidat.objects.filter(id__in=candidat_ids) 
+
+    try:
+        evaluateur = UserProfile.objects.get(user=request.user)
+    except UserProfile.DoesNotExist:
+        messages.add_message(request, messages.ERROR, 
+                        "Vous ne pouvez pas évaluer un candidat.")
+        return redirect("admin:recrutement_candidat_changelist")   
+
+    if request.method == "POST":
+        for c in candidats:
+            candidat_evaluation = CandidatEvaluation()
+            candidat_evaluation.candidat = c
+            candidat_evaluation.evaluateur = evaluateur
+            form = CandidatEvaluationForm(request.POST, 
+                    instance=candidat_evaluation, candidat=c,
+                             evaluateur=evaluateur) 
+            if form.is_valid():       
+                form.save()    
+                messages.add_message(request, messages.SUCCESS, 
+                                "Le commentaire et la note ont été affectés \
+                                    aux candidats.")
+
+        return redirect("admin:recrutement_candidat_changelist")
+    else:
+        form = CandidatEvaluationForm(candidat=None, evaluateur=evaluateur)
+
+    c = {'form' : form}   
+    return render_to_response("recrutement/evaluer_candidat.html", Context(c),
+                context_instance = RequestContext(request))
+
 def affecter_evaluateurs_candidats(request):
     candidat_ids = request.GET.get('ids').split(',')
     candidats = Candidat.objects.filter(id__in=candidat_ids)
index f903563..70c5a7b 100644 (file)
@@ -24,6 +24,8 @@ urlpatterns = patterns(
     url(r'^recrutement/pieces/$', 'recrutement.views.postuler_appel_offre', name='pieces'),
     url(r'^recrutement/evaluer_candidat/$', 
         'recrutement.views.evaluer_candidat', name='evaluer_candidat'),
+    url(r'^recrutement/evaluer_candidats/$', 
+        'recrutement.views.evaluer_candidats', name='evaluer_candidats'),
     url(r'^recrutement/postuler_appel_offre/$', 
         'recrutement.views.postuler_appel_offre', name='postuler_appel_offre'),    
     (r'^', include('project.rh.urls')),