From 362a3534604a9031986abb9dd2cd93de1d50baf7 Mon Sep 17 00:00:00 2001 From: "nilovna.bascunan-vasquez" Date: Tue, 31 May 2011 15:40:06 -0400 Subject: [PATCH] =?utf8?q?1546:=20Associer=20des=20=C3=A9valuateurs=20=C3=A0?= =?utf8?q?=20des=20candidatures.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- project/recrutement/admin.py | 17 ++++++++++++++++- project/recrutement/models.py | 8 +++++--- project/recrutement/views.py | 25 ++++++++++++++++++++++++- project/urls.py | 4 ++++ 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/project/recrutement/admin.py b/project/recrutement/admin.py index 39ebd59..9a73c0e 100644 --- a/project/recrutement/admin.py +++ b/project/recrutement/admin.py @@ -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 "Voir le candidat" % (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() diff --git a/project/recrutement/models.py b/project/recrutement/models.py index e0d2dec..1a8e405 100755 --- a/project/recrutement/models.py +++ b/project/recrutement/models.py @@ -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) diff --git a/project/recrutement/views.py b/project/recrutement/views.py index b5919be..486f0b9 100755 --- a/project/recrutement/views.py +++ b/project/recrutement/views.py @@ -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)) diff --git a/project/urls.py b/project/urls.py index 759afd0..231f396 100644 --- a/project/urls.py +++ b/project/urls.py @@ -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.*)$', 'django.views.static.serve', {'document_root': settings.PRIVE_MEDIA_ROOT}), ) -- 1.7.10.4