list_display = ('nom', 'resume', 'date_limite', '_candidatsList', )
list_filter = ('region',)
- def _candidatsList(self, request):
- return "<a href='%s?offre_emploi__id__exact=%s'>Voir les candidats</a>" % (reverse('admin:recrutement_candidat_changelist'), request.id)
+ def _candidatsList(self, obj):
+ 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"
class CandidatAdmin(admin.ModelAdmin):
date_hierarchy = 'date_creation'
- list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions')
+ list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions', 'evaluer_candidat')
list_filter = ('offre_emploi',)
fieldsets = (
('Informations personnelles', {
# Affecter un évaluateurs à des candidats
actions = ['affecter_candidats_evaluateur']
- def affecter_candidats_evaluateur(modeladmin, request, queryset):
- selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+ def affecter_candidats_evaluateur(modeladmin, obj):
+ 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"
- def queryset(self, request):
+
+ def evaluer_candidat(self, obj):
+ 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
qs = self.model._default_manager.get_query_set()
return qs.select_related('offre_emploi')
- def _actions(self, request):
- return "<a href='%s?id=%s'>Voir l'offre d'emploi</a>" % (reverse('admin:recrutement_offreemploi_changelist'), request.offre_emploi.id)
+ 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)
_actions.allow_tags = True
_actions.short_description = "Offre d'emploi"
)
class CandidatEvaluationAdmin(admin.ModelAdmin):
- pass
+ list_display = ('candidat', 'evaluateur', 'note', 'commentaire', 'date', )
+
+ 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.
+ """
+ qs = self.model._default_manager.get_query_set()
+ return qs.select_related('offre_emploi')
admin.site.register(OffreEmploi, OffreEmploiAdmin)
admin.site.register(Candidat, CandidatAdmin)