1546: Associer des évaluateurs à des candidatures.
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Tue, 31 May 2011 19:40:06 +0000 (15:40 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Tue, 31 May 2011 19:40:06 +0000 (15:40 -0400)
project/recrutement/admin.py
project/recrutement/models.py
project/recrutement/views.py
project/urls.py

index 39ebd59..9a73c0e 100644 (file)
@@ -9,9 +9,17 @@ from recrutement.models import *
 
 class OffreEmploiAdmin(admin.ModelAdmin):
     date_hierarchy = 'date_creation'
-    list_display = ('nom', 'resume', 'date_limite',)
+    list_display = ('nom', 'resume', 'date_limite', )#'_actions', 
+                    #'_tousCandidats')
     list_filter = ('region',)
 
+#    def _tousCandidats(self, request):       
+#        return OffreEmploi.candidats.through
+
+#    def _actions(self, request):            
+#        return "<a href='%s?id=%s'>Voir le candidat</a>" % (reverse('admin:recrutement_candidat_changelist'), request.id)
+#    _actions.allow_tags = True
+
 class CandidatPieceInline(admin.TabularInline):
     model = CandidatPiece
     extra = 1
@@ -45,6 +53,13 @@ class CandidatAdmin(admin.ModelAdmin):
         EvaluateurInline,
     ]
 
+    # Affecter un évaluateurs à des candidats
+    actions = ['affecter_candidats_evaluateur']
+    def affecter_candidats_evaluateur(modeladmin, request, queryset):
+        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+        return HttpResponseRedirect(reverse('affecter_evaluateurs_candidats')+"?ids=%s" % (",".join(selected)))
+    affecter_candidats_evaluateur.short_description = "Affecter evaluateur"
+
     def queryset(self, request):
         """
         Spécifie un queryset limité, autrement Django exécute un select_related()
index e0d2dec..1a8e405 100755 (executable)
@@ -5,11 +5,11 @@ import datetime
 from django.core.files.storage import FileSystemStorage
 from django.db import models
 import settings
+#from private_files import PrivateFileField
 
 import datamaster_modeles.models as ref
 from project.rh import models as rh
 
-
 # Abstracts
 class Metadata(models.Model):
     """Méta-données AUF.
@@ -105,6 +105,7 @@ class CandidatPiece(models.Model):
     candidat = models.ForeignKey(Candidat, db_column='candidat',
                 related_name='+') 
     nom = models.CharField(max_length=255)
+    #path = PrivateFileField("file", upload_to=candidat_piece_dispatch)
     path = models.FileField(upload_to=candidat_piece_dispatch, 
             storage=storage_prive)
 
@@ -112,7 +113,8 @@ class CandidatPiece(models.Model):
         return '%s' % (self.nom)
 
 class Evaluateur(models.Model):
-    candidats = models.ManyToManyField(Candidat)
+    candidats = models.ManyToManyField(Candidat, verbose_name='Dossiers',
+                    related_name="evaluateurs", blank=True, null=True,)
     nom = models.CharField(max_length=255)
     prenom = models.CharField(max_length=255)
 
@@ -125,5 +127,5 @@ class CandidatEvaluation(models.Model):
     evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur', 
                     related_name='+') 
     note = models.IntegerField()
-    commentaire = models.TextField()
+    commentaire = models.TextField(null=True, blank=True)
     date = models.DateField(auto_now_add=True)  
index b5919be..486f0b9 100755 (executable)
@@ -1,8 +1,31 @@
 # -*- encoding: utf-8 -*-
 from django.shortcuts import redirect, render_to_response, get_object_or_404
+from django.http import HttpResponse
+from django.contrib import messages
+from django.template import Context, RequestContext
+from django.shortcuts import render_to_response, redirect
 from django.template import RequestContext
 
+from forms import *
+from models import *
 from project.recrutement import models as recr
 
 def index(request):
-    return render_to_response('recrutement/index.html', {}, RequestContext(request))
+    return render_to_response('recrutement/index.html', {}, 
+                                RequestContext(request))
+
+def affecter_evaluateurs_candidats(request):
+    candidat_ids = request.GET.get('ids').split(',')
+    candidats = Candidat.objects.filter(id__in=candidat_ids)
+    if request.method == "POST":
+        form = EvaluateurForm(request.POST, candidats=candidats)
+        if form.is_valid():
+            form.save()
+            messages.add_message(request, messages.SUCCESS, 
+                            "Les évaluateurs ont été affectés aux candidats.")
+            return redirect("admin:recrutement_candidat_changelist")
+    else:
+        form = EvaluateurForm(candidats=candidats)
+
+    c = {'form' : form}   
+    return render_to_response("recrutement/affecter_evaluateurs.html", Context(c), context_instance = RequestContext(request))
index 759afd0..231f396 100644 (file)
@@ -3,6 +3,7 @@ from django.conf.urls.defaults import patterns, include, handler500, url
 from django.conf import settings
 from django.contrib import admin
 
+
 admin.autodiscover()
 
 handler500 # Pyflakes
@@ -10,12 +11,15 @@ handler500 # Pyflakes
 urlpatterns = patterns(
     '',
     (r'^$', 'project.views.index'),
+    #url(r'^private_files/', include('private_files.urls')),
     url(r'^admin_tools/', include('admin_tools.urls')),
     (r'^admin/', include(admin.site.urls)),
     (r'^connexion/$', 'django.contrib.auth.views.login'),
     (r'^deconnexion/$', 'django.contrib.auth.views.logout'),
     (r'^dae/', include('project.dae.urls')),
     (r'^recrutement/', include('project.recrutement.urls')),
+    url(r'^recrutement/affecter_evaluateurs_candidats/$', 'recrutement.views.affecter_evaluateurs_candidats', 
+        name='affecter_evaluateurs_candidats'),
     (r'^', include('project.rh.urls')),
     (r'^prive/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.PRIVE_MEDIA_ROOT}),
 )