perm grp eval
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 20 Mar 2012 13:22:47 +0000 (09:22 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 20 Mar 2012 13:22:47 +0000 (09:22 -0400)
project/recrutement/admin.py

index 216a925..bae1be2 100644 (file)
@@ -11,8 +11,7 @@ from project.rh import models as rh
 
 from project.dae.utils import get_employe_from_user as get_emp
 from recrutement.models import *
-from recrutement.workflow import grp_evaluateurs_recrutement, \
-                    grp_drh_recrutement, grp_directeurs_bureau_recrutement, \
+from recrutement.workflow import grp_drh_recrutement, grp_directeurs_bureau_recrutement, \
                     grp_administrateurs_recrutement, \
                     grp_correspondants_rh_recrutement
 from recrutement.forms import *
@@ -109,7 +108,7 @@ class OffreEmploiAdmin(VersionAdmin):
             employe = get_emp(request.user)
             return qs.filter(region=employe.implantation.region)
 
-        if grp_evaluateurs_recrutement in user_groupes:
+        if  Evaluateur.objects.filter(user=request.user).exists():
             evaluateur = Evaluateur.objects.get(user=request.user)
             offre_ids = [e.candidat.offre_emploi_id for e in
                     CandidatEvaluation.objects.select_related('candidat').filter(evaluateur=evaluateur)]
@@ -187,14 +186,7 @@ class ProxyOffreEmploiAdmin(OffreEmploiAdmin):
         return False
 
     def has_change_permission(self, request, obj=None):
-        user_groupes = request.user.groups.all()
-        if request.user.is_superuser is True or \
-            grp_evaluateurs_recrutement in user_groupes or \
-            grp_drh_recrutement in user_groupes or \
-            grp_directeurs_bureau_recrutement in user_groupes or \
-            grp_administrateurs_recrutement in user_groupes:
-            return True
-        return False   
+        return True
 
 class CandidatPieceInline(admin.TabularInline):
     model = CandidatPiece
@@ -202,6 +194,11 @@ class CandidatPieceInline(admin.TabularInline):
     extra = 1
     max_num = 3
 
+class ReadOnlyCandidatPieceInline(CandidatPieceInline):
+    readonly_fields = ('candidat', 'nom', 'path', )
+    cand_delete = False
+
+
 class CandidatEvaluationInlineFormSet(BaseInlineFormSet):
     """
     Empêche la suppression d'une évaluation pour le CandidatEvaluationInline
@@ -384,11 +381,11 @@ class CandidatAdmin(VersionAdmin):
             return qs.select_related('candidats').\
                         filter(offre_emploi__region=employe.implantation.region)
 
-        if grp_evaluateurs_recrutement in user_groupes:
+        if  Evaluateur.objects.filter(user=request.user).exists():
             evaluateur = Evaluateur.objects.get(user=request.user)
             candidat_ids = [e.candidat.id for e in
                     CandidatEvaluation.objects.filter(evaluateur=evaluateur)]
-            return qs.select_related('candidats').filter(id__in=candidat_ids)            
+            return qs.select_related('candidats').filter(id__in=candidat_ids)
         return qs.none()    
 
 
@@ -417,16 +414,8 @@ class ProxyCandidatAdmin(CandidatAdmin):
                         'poste_actuel', 'domaine_professionnel',)
         }),   
     )
-    inlines = ()
+    inlines = (CandidatEvaluationInline, )
 
-    ### Lieu de redirection après le change
-    def response_change(self, request, obj):
-        response = super(ProxyCandidatAdmin, self).response_change(request, obj)
-        user_groupes = request.user.groups.all()
-        return HttpResponseRedirect(reverse\
-                                ('admin:recrutement_proxycandidat_changelist'))
-
-    ### Permissions add, delete, change
     def has_add_permission(self, request):
         return False
 
@@ -434,14 +423,7 @@ class ProxyCandidatAdmin(CandidatAdmin):
         return False
 
     def has_change_permission(self, request, obj=None):
-        user_groupes = request.user.groups.all()
-        if request.user.is_superuser is True or \
-            grp_drh_recrutement in user_groupes or \
-            grp_evaluateurs_recrutement in user_groupes or \
-            grp_directeurs_bureau_recrutement in user_groupes or \
-            grp_administrateurs_recrutement in user_groupes:
-            return True
-        return False   
+        return True
 
 class CandidatPieceAdmin(admin.ModelAdmin):
     list_display = ('nom', 'candidat', )