1941: permissions régionales (Partie 1)
authorNilovna Bascunan-Vasquez <contact@nilovna.com>
Wed, 10 Aug 2011 21:50:38 +0000 (17:50 -0400)
committerNilovna Bascunan-Vasquez <contact@nilovna.com>
Wed, 10 Aug 2011 21:50:38 +0000 (17:50 -0400)
project/recrutement/admin.py
project/recrutement/forms.py
project/recrutement/models.py

index f8a8af5..b34debf 100644 (file)
@@ -8,7 +8,7 @@ from django.core.files.storage import default_storage
 from django.forms.models import BaseInlineFormSet
 
 from reversion.admin import VersionAdmin
-from datamaster_modeles.models import Employe, Implantation, Region
+from datamaster_modeles.models import Implantation, Region, Bureau
 
 from project.rh import models as rh
 from recrutement.models import *
@@ -19,6 +19,8 @@ from recrutement.forms import *
 
 from project.dae.utils import get_employe_from_user as get_emp
 
+IMPLANTATIONS_CENTRALES = [15, 19]
+
 class ProxyEvaluateur(Evaluateur.offres_emploi.through):
     """
     Ce proxy sert uniquement dans l'admin à disposer d'un libellé
@@ -67,15 +69,42 @@ class OffreEmploiAdmin(VersionAdmin):
         form = super(OffreEmploiAdmin, self).get_form(request, obj, **kwargs)
         employe = get_emp(request.user)
         user_groupes = request.user.groups.all()
-        if not grp_drh_recrutement in user_groupes and \
-            not request.user.is_superuser:
-            if form.declared_fields.has_key('region'):
-                region_field = form.declared_fields['region']
-            else:
-                region_field = form.base_fields['region']
-                user = request.user
-                region_ids = [g.id for g in user.regions.all()]
-                region_field.queryset = Region.objects.filter(id__in=region_ids)
+
+        ### Region ###
+        if form.declared_fields.has_key('region'):
+            region_field = form.declared_fields['region']
+        else:
+            region_field = form.base_fields['region']
+
+        if grp_drh_recrutement in user_groupes:
+            region_field.queryset = Region.objects.all()
+        else:
+            region_field.queryset = Region.objects.\
+                                    filter(id=employe.implantation.region.id)
+        
+        ### Poste ###
+        if form.declared_fields.has_key('poste'):
+            poste_field = form.declared_fields['poste']
+        else:
+            poste_field = form.base_fields['poste']
+
+        import pdb;pdb.set_trace()
+        if grp_drh_recrutement in user_groupes:
+            poste_field.queryset = rh.Poste.objects.all()
+        else:
+            poste_field.queryset = rh.Poste.objects.filter(implantation__region=employe.implantation.region).exclude(implantation__in=IMPLANTATIONS_CENTRALES)
+        
+        ### Bureau ###
+        if form.declared_fields.has_key('bureau'):
+            bureau_field = form.declared_fields['bureau']
+        else:
+            bureau_field = form.base_fields['bureau']
+
+        if grp_drh_recrutement in user_groupes:
+            bureau_field.queryset = Bureau.objects.all()
+        else:
+            bureau_field.queryset = Bureau.objects.filter(region=employe.implantation.region)
+        
         return form
 
     def queryset(self, request):
index 68187df..778e72c 100644 (file)
@@ -12,6 +12,7 @@ from django.forms import ModelForm, ModelChoiceField, HiddenInput, CharField
 from django.forms.models import BaseInlineFormSet 
 from django.core.mail import send_mail
 
+from datamaster_modeles.models import Employe, Implantation, Region
 from tinymce.widgets import TinyMCE
 from captcha.fields import CaptchaField
 
@@ -70,6 +71,9 @@ class OffreEmploiForm(ModelForm):
     class Meta:
         model = recr.OffreEmploi  
 
+    def __init__(self, *args, **kwargs):
+        super(OffreEmploiForm, self).__init__(*args, **kwargs)
+    
     def save(self, *args, **kwargs):
         kwargs2 = kwargs.copy()
         kwargs2['commit'] = False
index 7789294..ac46f39 100755 (executable)
@@ -10,6 +10,8 @@ import settings
 from south.modelsinspector import add_introspection_rules
 add_introspection_rules([], ["^tinymce.models.HTMLField"])
 import datamaster_modeles.models as ref
+
+from project.rh import models as rh
 from recrutement.workflow import grp_evaluateurs_recrutement
 from auf.django.emploi import models as emploi
 from auf.django.emploi.models import TYPE_PIECE_CHOICES
@@ -180,4 +182,3 @@ class CandidatCourriel(models.Model):
     class Meta:
         verbose_name = "modèle de courriel"
         verbose_name_plural = "modèles de courriel"
-