Commit | Line | Data |
---|---|---|
df59fcab | 1 | # -*- encoding: utf-8 -*- |
2 | ||
6067184b | 3 | from django.core.urlresolvers import reverse |
4 | from django.http import HttpResponseRedirect | |
df59fcab | 5 | from django.contrib import admin |
6067184b | 6 | from reversion.admin import VersionAdmin |
7 | ||
df59fcab | 8 | from recrutement.models import * |
9 | ||
10 | class OffreEmploiAdmin(admin.ModelAdmin): | |
7f9e891e | 11 | date_hierarchy = 'date_creation' |
362a3534 | 12 | list_display = ('nom', 'resume', 'date_limite', )#'_actions', |
13 | #'_tousCandidats') | |
7f9e891e | 14 | list_filter = ('region',) |
df59fcab | 15 | |
362a3534 | 16 | # def _tousCandidats(self, request): |
17 | # return OffreEmploi.candidats.through | |
18 | ||
19 | # def _actions(self, request): | |
20 | # return "<a href='%s?id=%s'>Voir le candidat</a>" % (reverse('admin:recrutement_candidat_changelist'), request.id) | |
21 | # _actions.allow_tags = True | |
22 | ||
170c9aa2 | 23 | class CandidatPieceInline(admin.TabularInline): |
24 | model = CandidatPiece | |
25 | extra = 1 | |
26 | ||
eb579d40 | 27 | class EvaluateurInline(admin.TabularInline): |
28 | model = Evaluateur.candidats.through | |
29 | extra = 1 | |
30 | ||
df59fcab | 31 | class CandidatAdmin(admin.ModelAdmin): |
7f9e891e | 32 | date_hierarchy = 'date_creation' |
6067184b | 33 | list_display = ('nom', 'prenom', 'offre_emploi','statut', '_actions') |
7f9e891e | 34 | fieldsets = ( |
35 | ('Informations personnelles', { | |
36 | 'fields': ('prenom','nom','genre', 'nationalite', 'date_naissance', | |
37 | 'situation_famille', 'nombre_dependant',) | |
38 | }), | |
39 | ('Adresse', { | |
40 | 'fields': ('adresse', 'ville', 'etat_province', 'pays', ) | |
41 | }), | |
42 | ('Informations professionnelles', { | |
2e9ee615 | 43 | 'fields': ('offre_emploi','niveau_diplome','employeur_actuel','poste_actuel', |
44 | 'domaine_professionnel',) | |
7f9e891e | 45 | }), |
46 | ('Options avancées', { | |
47 | 'classes': ('collapse',), | |
48 | 'fields': ('actif', 'statut', ) | |
49 | }), | |
50 | ) | |
170c9aa2 | 51 | inlines = [ |
52 | CandidatPieceInline, | |
eb579d40 | 53 | EvaluateurInline, |
170c9aa2 | 54 | ] |
f9983b5a | 55 | |
362a3534 | 56 | # Affecter un évaluateurs à des candidats |
57 | actions = ['affecter_candidats_evaluateur'] | |
58 | def affecter_candidats_evaluateur(modeladmin, request, queryset): | |
59 | selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME) | |
60 | return HttpResponseRedirect(reverse('affecter_evaluateurs_candidats')+"?ids=%s" % (",".join(selected))) | |
61 | affecter_candidats_evaluateur.short_description = "Affecter evaluateur" | |
62 | ||
f9983b5a OL |
63 | def queryset(self, request): |
64 | """ | |
2e9ee615 | 65 | Spécifie un queryset limité, autrement Django exécute un select_related() |
66 | sans paramètre, ce qui a pour effet de charger tous les objets FK, sans limite | |
67 | de profondeur. Dès qu'on arrive, dans les modèles de Region, il existe plusieurs | |
68 | boucles, ce qui conduit à la génération d'une requête infinie. | |
f9983b5a OL |
69 | """ |
70 | qs = self.model._default_manager.get_query_set() | |
71 | return qs.select_related('offre_emploi') | |
df59fcab | 72 | |
6067184b | 73 | def _actions(self, request): |
74 | return "<a href='%s?id=%s'>Voir l'offre d'emploi</a>" % (reverse('admin:recrutement_offreemploi_changelist'), request.offre_emploi.id) | |
75 | _actions.allow_tags = True | |
76 | ||
2e9ee615 | 77 | class CandidatPieceAdmin(admin.ModelAdmin): |
170c9aa2 | 78 | list_display = ('nom', 'candidat', ) |
79 | ||
80 | def queryset(self, request): | |
81 | """ | |
82 | Spécifie un queryset limité, autrement Django exécute un | |
83 | select_related() sans paramètre, ce qui a pour effet de charger tous | |
84 | les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les | |
85 | modèles de Region, il existe plusieurs boucles, ce qui conduit à la | |
86 | génération d'une requête infinie. | |
87 | """ | |
88 | qs = self.model._default_manager.get_query_set() | |
89 | return qs.select_related('candidat') | |
2e9ee615 | 90 | |
4418c732 | 91 | class EvaluateurAdmin(admin.ModelAdmin): |
eb579d40 | 92 | fieldsets = ( |
93 | (None, {'fields': ('nom', 'prenom')}), | |
94 | (None, {'fields': ('candidats',)}), | |
95 | ) | |
4418c732 | 96 | |
97 | class CandidatEvaluationAdmin(admin.ModelAdmin): | |
98 | pass | |
99 | ||
df59fcab | 100 | admin.site.register(OffreEmploi, OffreEmploiAdmin) |
101 | admin.site.register(Candidat, CandidatAdmin) | |
4418c732 | 102 | admin.site.register(CandidatPiece, CandidatPieceAdmin) |
103 | admin.site.register(Evaluateur, EvaluateurAdmin) | |
104 | admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin) |