from recrutement.workflow import grp_drh_recrutement, grp_directeurs_bureau_recrutement, \
grp_administrateurs_recrutement, \
grp_correspondants_rh_recrutement
+
from recrutement.forms import *
### CONSTANTES
"""
user_groupes = request.user.groups.all()
- if grp_drh_recrutement in user_groupes or \
+ if request.user.is_superuser or \
+ grp_drh_recrutement in user_groupes or \
grp_correspondants_rh_recrutement in user_groupes or \
grp_directeurs_bureau_recrutement in user_groupes or \
grp_administrateurs_recrutement in user_groupes:
- is_recrutement = True
+ return True
else:
- is_recrutement = False
+ return False
try:
Evaluateur.objects.get(user=request.user)
candidats_evaluations_ids = [ce.id for ce in candidats_evaluations]
return qs.filter(id__in=candidats_evaluations_ids)
+
+class MesCandidatEvaluationAdmin(CandidatEvaluationAdmin):
+
+ def has_change_permission(self, request, obj=None):
+ try:
+ Evaluateur.objects.get(user=request.user)
+ is_evaluateur = True
+ except:
+ is_evaluateur = False
+
+ if obj is None or is_evaluateur:
+ return True
+
+ try:
+ return request.user == obj.evaluateur.user
+ except:
+ return False
+
+ def queryset(self, request):
+ qs = self.model._default_manager.get_query_set().select_related('offre_emploi')
+ evaluateur = Evaluateur.objects.get(user=request.user)
+ candidats_evaluations = \
+ CandidatEvaluation.objects.filter(evaluateur=evaluateur,
+ candidat__statut__in=('REC', ))
+ candidats_evaluations_ids = [ce.id for ce in candidats_evaluations]
+ return qs.filter(id__in=candidats_evaluations_ids)
+
+
class CourrielTemplateAdmin(VersionAdmin):
### Actions à afficher
def get_actions(self, request):
admin.site.register(Candidat, CandidatAdmin)
admin.site.register(ProxyCandidat, ProxyCandidatAdmin)
admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
+admin.site.register(MesCandidatEvaluation, MesCandidatEvaluationAdmin)
admin.site.register(Evaluateur, EvaluateurAdmin)
admin.site.register(CourrielTemplate, CourrielTemplateAdmin)
from django.contrib.auth.models import User
from tinymce import models as tinymce_models
from django.db import models
+from django.db.models.signals import post_init, pre_delete
+from django.dispatch import receiver
+
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^tinymce.models.HTMLField"])
from auf.django.emploi import models as emploi
-
+from recrutement.workflow import grp_evaluateurs_recrutement
### CONSTANTES
#NOTES
def __unicode__(self):
return '%s %s' % (self.user.first_name, self.user.last_name)
+# Synchro des objets évaluateurs pour mettre les users Django dans le groupe
+# évaluateurs, afin d'y mettre des permissions
+@receiver(post_init, sender=Evaluateur)
+def sync_add_groupe_evaluateur(sender, **kwargs):
+ instance = kwargs['instance']
+ if grp_evaluateurs_recrutement not in instance.user.groups.all():
+ instance.user.groups.add(grp_evaluateurs_recrutement)
+ instance.user.save()
+
+@receiver(pre_delete, sender=Evaluateur)
+def sync_delete_groupe_evaluateur(sender, **kwargs):
+ instance = kwargs['instance']
+ instance.user.groups.remove(grp_evaluateurs_recrutement)
+ instance.user.save()
+
+
class CandidatEvaluation(models.Model):
candidat = models.ForeignKey(emploi.Candidat, db_column='candidat',
related_name='+',)
def __unicode__(self):
return u"Évaluation de %s" % self.candidat
+
+class MesCandidatEvaluation(CandidatEvaluation):
+
+ class Meta:
+ proxy = True
+ verbose_name = u"Mon candidat à évaluer"
+ verbose_name_plural = u"Mes candidats à évaluer"
+
+
#### TEMPLATE COURRIEL
TEMPLATE_CHOICES = (
('SEL', 'Sélectionné'),