1551: Ajouter un lien vers la liste des candidatures liées à une offre d'emploi.
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Tue, 31 May 2011 21:56:04 +0000 (17:56 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Tue, 31 May 2011 21:56:04 +0000 (17:56 -0400)
Correction

project/recrutement/admin.py

index 9a73c0e..a74162e 100644 (file)
@@ -9,16 +9,23 @@ from recrutement.models import *
 
 class OffreEmploiAdmin(admin.ModelAdmin):
     date_hierarchy = 'date_creation'
-    list_display = ('nom', 'resume', 'date_limite', )#'_actions', 
-                    #'_tousCandidats')
+    list_display = ('nom', 'resume', 'date_limite', '_candidatsList', )
     list_filter = ('region',)
 
-#    def _tousCandidats(self, request):       
-#        return OffreEmploi.candidats.through
+    def _candidatsList(self, request):     
+        return "<a href='%s?offre_emploi__id__exact=%s'>Voir les candidats</a>" % (reverse('admin:recrutement_candidat_changelist'), request.id)
+    _candidatsList.allow_tags = True 
+    _candidatsList.short_description = "Liste des candidats"   
 
-#    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
+    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.
+        """
+        qs = self.model._default_manager.get_query_set()
+        return qs.select_related('offre_emploi')
 
 class CandidatPieceInline(admin.TabularInline):
     model = CandidatPiece
@@ -31,6 +38,7 @@ class EvaluateurInline(admin.TabularInline):
 class CandidatAdmin(admin.ModelAdmin):
     date_hierarchy = 'date_creation'
     list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions')
+    list_filter = ('offre_emploi',)
     fieldsets = (
         ('Informations personnelles', {
             'fields': ('prenom','nom','genre', 'nationalite', 'date_naissance',
@@ -73,6 +81,7 @@ class CandidatAdmin(admin.ModelAdmin):
     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)
     _actions.allow_tags = True
+    _actions.short_description = "Offre d'emploi"
 
 class CandidatPieceAdmin(admin.ModelAdmin):
     list_display = ('nom', 'candidat', )