list_filter = ('region',)
def _candidatsList(self, obj):
- return "<a href='%s?offre_emploi__id__exact=%s'>Voir les candidats</a>" % (reverse('admin:recrutement_candidat_changelist'), obj.id)
+ return "<a href='%s?offre_emploi__id__exact=%s'>Voir les candidats \
+ </a>" % (reverse('admin:recrutement_candidat_changelist'), obj.id)
_candidatsList.allow_tags = True
_candidatsList.short_description = "Liste des candidats"
def queryset(self, request):
"""
- Spécifie un queryset limité, autrement Django exécute un select_related()
- sans paramètre, ce qui a pour effet de charger tous les objets FK, sans limite
- de profondeur. Dès qu'on arrive, dans les modèles de Region, il existe plusieurs
- boucles, ce qui conduit à la génération d'une requête infinie.
+ Spécifie un queryset limité, autrement Django exécute un
+ select_related() sans paramètre, ce qui a pour effet de charger tous
+ les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
+ modèles de Region, il existe plusieurs boucles, ce qui conduit à la
+ génération d'une requête infinie.
"""
user_email = request.user.email
user = get_object_or_404(Employe, courriel=user_email)
user_implantation = user.implantation
- implantation_region = get_object_or_404(Implantation, id=user_implantation.id)
- user_region = get_object_or_404(Region, id=implantation_region.region.id)
+ implantation_region = get_object_or_404(Implantation,
+ id=user_implantation.id)
+ user_region = get_object_or_404(Region,
+ id=implantation_region.region.id)
qs = self.model._default_manager.get_query_set()
return qs.select_related('offre_emploi').filter(region=user_region.id)
class CandidatAdmin(VersionAdmin):
date_hierarchy = 'date_creation'
- list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions', 'evaluer_candidat')
- list_filter = ('offre_emploi',)
+ list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions',
+ 'evaluer_candidat', )
+ list_filter = ('offre_emploi', )
fieldsets = (
('Informations personnelles', {
'fields': ('prenom','nom','genre', 'nationalite', 'date_naissance',
'fields': ('adresse', 'ville', 'etat_province', 'pays', )
}),
('Informations professionnelles', {
- 'fields': ('offre_emploi','niveau_diplome','employeur_actuel','poste_actuel',
- 'domaine_professionnel',)
+ 'fields': ('offre_emploi','niveau_diplome','employeur_actuel',
+ 'poste_actuel', 'domaine_professionnel',)
}),
('Options avancées', {
'classes': ('collapse',),
actions = ['affecter_candidats_evaluateur']
def affecter_candidats_evaluateur(modeladmin, obj):
selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
- return HttpResponseRedirect(reverse('affecter_evaluateurs_candidats')+"?ids=%s" % (",".join(selected)))
+ return HttpResponseRedirect(reverse('affecter_evaluateurs_candidats')+
+ "?ids=%s" % (",".join(selected)))
affecter_candidats_evaluateur.short_description = "Affecter evaluateur"
-
def evaluer_candidat(self, obj):
- return "<a href='%s?id=%s'>Évaluer le candidat</a>" % (reverse('evaluer_candidat'), obj.id)
+ return "<a href='%s?id=%s'>Évaluer le candidat \
+ </a>" % (reverse('evaluer_candidat'), obj.id)
evaluer_candidat.allow_tags = True
evaluer_candidat.short_description = "Évaluer"
def queryset(self, obj):
"""
- Spécifie un queryset limité, autrement Django exécute un select_related()
- sans paramètre, ce qui a pour effet de charger tous les objets FK, sans limite
- de profondeur. Dès qu'on arrive, dans les modèles de Region, il existe plusieurs
- boucles, ce qui conduit à la génération d'une requête infinie.
+ Spécifie un queryset limité, autrement Django exécute un
+ select_related() sans paramètre, ce qui a pour effet de charger tous
+ les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
+ 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')
def _actions(self, obj):
- return "<a href='%s?id=%s'>Voir l'offre d'emploi</a>" % (reverse('admin:recrutement_offreemploi_changelist'), obj.offre_emploi.id)
+ return "<a href='%s?id=%s'>Voir l'offre d'emploi</a> \
+ " % (reverse('admin:recrutement_offreemploi_changelist'),
+ obj.offre_emploi.id)
_actions.allow_tags = True
_actions.short_description = "Offre d'emploi"
def queryset(self, obj):
"""
- Spécifie un queryset limité, autrement Django exécute un select_related()
- sans paramètre, ce qui a pour effet de charger tous les objets FK, sans limite
- de profondeur. Dès qu'on arrive, dans les modèles de Region, il existe plusieurs
- boucles, ce qui conduit à la génération d'une requête infinie.
+ Spécifie un queryset limité, autrement Django exécute un
+ select_related() sans paramètre, ce qui a pour effet de charger tous
+ les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
+ 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')
from django import forms
from django.contrib import admin
from django.forms.models import inlineformset_factory
-#from form_utils.forms import BetterModelForm
+from form_utils.forms import BetterModelForm
from django.forms import ModelForm
from models import *
model = CandidatEvaluation
class EvaluateurForm(forms.Form):
- evaluateurs = forms.ModelMultipleChoiceField(queryset=Evaluateur.objects.all())
+ evaluateurs = forms.ModelMultipleChoiceField(queryset=
+ Evaluateur.objects.all())
def __init__(self, *args, **kwargs):
self.candidats = kwargs.pop('candidats')
################################################################################
# OFFRE EMPLOI
################################################################################
-class PostulerOffreEmploiForm(ModelForm):
+class PostulerOffreEmploiForm(BetterModelForm):
+ def __init__(self, *args, **kwargs):
+ self.offre_emploi = kwargs.pop('offre_emploi')
+ self.actif = True
+ # Statut de la cadidature à Nouveau
+ self.statut = STATUT_CHOICES[0]
+ super(PostulerOffreEmploiForm, self).__init__(*args, **kwargs)
+
+ def save(self):
+ super(PostulerOffreEmploiForm, self).save()
+
class Meta:
- fields = ('note', 'commentaire', 'evaluateur')
- model = OffreEmploi
+ fieldsets = [
+ ('Informations personnelles', {
+ 'fields': ['prenom','nom','genre', 'nationalite',
+ 'date_naissance', 'situation_famille',
+ 'nombre_dependant',]}),
+ ('Adresse', {
+ 'fields': ['adresse', 'ville', 'etat_province', 'pays', ]}),
+ ('Informations professionnelles', {
+ 'fields': ['niveau_diplome', 'employeur_actuel',
+ 'poste_actuel', 'domaine_professionnel', ]
+ })]
+ model = Candidat
if request.method == "POST":
candidat_evaluation = CandidatEvaluation()
candidat_evaluation.candidat = candidat
- form = CandidatEvaluationForm(request.POST, instance=candidat_evaluation, candidat=candidat)
+ form = CandidatEvaluationForm(request.POST,
+ instance=candidat_evaluation, candidat=candidat)
if form.is_valid():
form.save()
messages.add_message(request, messages.SUCCESS,
form = CandidatEvaluationForm(candidat=candidat)
c = {'form' : form}
- return render_to_response("recrutement/evaluer_candidat.html", Context(c), \
+ return render_to_response("recrutement/evaluer_candidat.html", Context(c),
context_instance = RequestContext(request))
def affecter_evaluateurs_candidats(request):
form = EvaluateurForm(candidats=candidats)
c = {'form' : form}
- return render_to_response("recrutement/affecter_evaluateurs.html", Context(c), context_instance = RequestContext(request))
+ return render_to_response("recrutement/affecter_evaluateurs.html",
+ Context(c), context_instance = RequestContext(request))
+
+def postuler_appel_offre(request):
+ offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id'))
+ candidat = Candidat()
+ candidat.offre_emploi = offre_emploi
+ if request.method == "POST":
+ form = PostulerOffreEmploiForm(request.POST, instance=candidat,
+ offre_emploi=offre_emploi)
+ if form.is_valid():
+ form.save()
+ messages.add_message(request, messages.SUCCESS,
+ "Votre application à l'appel d'offre d'emploi a \
+ été effectuée.")
+ return redirect("admin:recrutement_offreemploi_changelist")
+ else:
+ form = PostulerOffreEmploiForm(offre_emploi=offre_emploi)
+
+ c = {'form' : form}
+ return render_to_response("recrutement/postuler_appel_offre.html",
+ Context(c), context_instance = RequestContext(request))