'debut_affectation', 'lieu_affectation', 'nom',
'resume', 'date_limite', 'region')
fieldsets = (
- (None, {
+ ('Nom', {
'fields': ('nom', )
}),
- (None, {
+ ('Description générale', {
'fields': ('poste', 'resume','description', 'date_limite', )
}),
- (None, {
+ ('Coordonnées', {
'fields': ('lieu_affectation', 'bureau', 'region', )
}),
- (None, {
+ ('Autre', {
'fields': ('debut_affectation', 'duree_affectation',
'renumeration', )
}),
class EvaluateurInline(admin.TabularInline):
model = ProxyEvaluateur
+ fields = ('evaluateur',)
extra = 1
class CandidatAdmin(VersionAdmin):
date_hierarchy = 'date_creation'
list_display = ('nom', 'prenom', 'offre_emploi','statut',
- 'voir_offre_emploi', 'evaluer_candidat', #'note_evaluateur',
+ 'voir_offre_emploi', #'note_evaluateur',
'calculer_moyenne', 'afficher_candidat',)
list_filter = ('offre_emploi', )
fieldsets = (
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'
+ evaluer_candidat.short_description = 'Note du candidat'
# Afficher un candidat
def afficher_candidat(self, obj):
- return "<a href='%s?id=%s'>Voir le candidat \
- </a>" % (reverse('recrutement_proxycandidat_change'), obj.id)
+ return "<a href='%s'>Voir le candidat </a>" \
+ % (reverse('admin:recrutement_proxycandidat_change', args=(obj.id,)))
afficher_candidat.allow_tags = True
afficher_candidat.short_description = u'Afficher les détails du candidat'
# Voir l'offre d'emploi
def voir_offre_emploi(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'>Voir l'offre d'emploi</a>" % \
+ (reverse('admin:recrutement_proxyoffreemploi_change',
+ args=(obj.offre_emploi.id,)))
voir_offre_emploi.allow_tags = True
voir_offre_emploi.short_description = "Afficher l'offre d'emploi"
class ProxyCandidatAdmin(CandidatAdmin):
#TODO: init boucler sur les fields pour le readonly
- list_display = ('nom', 'prenom', 'offre_emploi','statut',
- 'voir_offre_emploi', 'evaluer_candidat', #'note_evaluateur',
- 'calculer_moyenne',)
+ list_display = ('nom', 'prenom','statut', 'offre_emploi',
+ 'voir_offre_emploi', 'evaluer_candidat', 'afficher_candidat')#'note_evaluateur',)
readonly_fields = ('statut', 'offre_emploi', 'prenom', 'nom',
'genre', 'nationalite', 'date_naissance',
'situation_famille', 'nombre_dependant', 'telephone',
return True
return False
- def voir_offre_emploi(self, obj):
- return "<a href='%s?id=%s'>Voir l'offre d'emploi</a> \
- " % (reverse('admin:recrutement_proxyoffreemploi_changelist'),
- obj.offre_emploi.id)
- voir_offre_emploi.allow_tags = True
- voir_offre_emploi.short_description = "Afficher l'offre d'emploi"
-
class CandidatPieceAdmin(admin.ModelAdmin):
list_display = ('nom', 'candidat', )
class EvaluateurAdmin(VersionAdmin):
fieldsets = (
(None, {'fields': ('user', )}),
- (None, {'fields': ('candidats',)}),
+ #(None, {'fields': ('candidats',)}),
)
# Peut-être qu'on peut enlever cette def, à cause des permissions
Affiche la liste d'évaluateur que si le user connecté
possède un Evaluateur
"""
- user_groupes = obj.user.groups.all()
+ user_groupes = request.user.groups.all()
if grp_drh_recrutement in user_groupes:
return self.model._default_manager.get_query_set()
pass
class CandidatEvaluationAdmin(VersionAdmin):
- list_display = ('candidat', 'evaluateur', 'note', 'commentaire', 'date', )
+ list_display = ('candidat', 'offre_emploi_candidat', 'evaluateur', 'note',
+ 'commentaire', 'date',)
+
+ def offre_emploi_candidat(self, obj):
+ return obj.candidat.offre_emploi
+
+ def queryset(self, request):
+ evaluateur = Evaluateur.objects.get(user=request.user)
+ candidats = Candidat.objects.filter(evaluateurs=evaluateur)
+ candidats_evaluations = CandidatEvaluation.objects.\
+ filter(evaluateur=evaluateur,
+ candidat__in=candidats)
+ qs = self.model._default_manager.get_query_set()
+ candidats_evaluations_ids = [ce.id for ce in \
+ candidats_evaluations.all()]
+ return qs.select_related('offre_emploi')#.\
+ #filter(id__in=candidats_evaluations_ids)
class CourrielTemplateAdmin(VersionAdmin):
pass
admin.site.register(OffreEmploi, OffreEmploiAdmin)
admin.site.register(Candidat, CandidatAdmin)
+admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
admin.site.register(CourrielTemplate, CourrielTemplateAdmin)
admin.site.register(Evaluateur, EvaluateurAdmin)
admin.site.register(AdministrateurRegional, AdministrateurRegionalAdmin)
class OffreEmploiManager(models.Manager):
def get_query_set(self):
fkeys = ('region',)
- return super(OffreEmploiManager, self).get_query_set().select_related(*fkeys).all()
+ return super(OffreEmploiManager, self).get_query_set().\
+ select_related(*fkeys).all()
class ProxyPoste(Poste):
class Meta:
return '%s' % (self.nom)
class Evaluateur(models.Model):
- user = models.ForeignKey(User, unique=True,
- verbose_name="permission")
- candidats = models.ManyToManyField(Candidat, verbose_name='candidats',
- blank=True, null=True,related_name="evaluateurs")
+ user = models.ForeignKey(User, unique=True, verbose_name="permission")
+ candidats = models.ManyToManyField(Candidat, through='CandidatEvaluation',
+ #verbose_name='candidats', blank=True, null=True,
+ related_name="evaluateurs")
class Meta:
verbose_name = "évaluateur"
def __unicode__(self):
return '%s %s' % (self.user.first_name, self.user.last_name)
-
class CandidatEvaluation(models.Model):
candidat = models.ForeignKey(Candidat, db_column='candidat',
related_name='+',)