Ajouté un manager et modele proxy pour obtenir une liste filtrée des Implantations
authorBenoit C. Sirois <benoit.clennett-sirois@auf.org>
Fri, 1 Mar 2013 19:33:10 +0000 (14:33 -0500)
committerBenoit C. Sirois <benoit.clennett-sirois@auf.org>
Fri, 1 Mar 2013 19:33:10 +0000 (14:33 -0500)
project/dae/managers.py
project/dae/models.py
project/dae/views.py

index f712815..544d906 100644 (file)
@@ -7,10 +7,15 @@ from project.rh.managers import \
         DossierManager as RHDossierManager, \
         PosteManager as RHPosteManager, \
         PosteComparaisonManager as RHPosteComparaisonManager, \
-        DossierComparaisonManager as RHDossierComparaisonManager
+        DossierComparaisonManager as RHDossierComparaisonManager, \
+        SecurityManager
 from project.dae.workflow import MAP_GROUPE_ETATS_A_FAIRE
 
 
+class ImplantationManager(SecurityManager):
+    use_for_related_fields = True
+    prefixe_implantation = "zone_administrative"
+
 class TodoManagerMixin(object):
 
     def mes_choses_a_faire(self, user):
index d15e9e9..fbb8f7a 100644 (file)
@@ -11,7 +11,10 @@ from django.db.models import Q
 
 import reversion
 
-from project.dae.managers import PosteManager, DossierManager
+from auf.django.references import models as ref
+
+from project.dae.managers import (
+    PosteManager, DossierManager, ImplantationManager)
 from project.dae.workflow import PosteWorkflow, DossierWorkflow
 from project.dae.workflow import \
         DOSSIER_ETAT_DRH_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION, \
@@ -841,3 +844,12 @@ class ProxyPosteStatut(Poste):
         proxy = True
         verbose_name = "Statut du poste"
         verbose_name_plural = "Statut des postes"
+
+
+class ProxyImplantation(ref.Implantation):
+
+    # Ajout d'un manager pour ref.Implantation
+    dae_manager = ImplantationManager()
+    
+    class Meta:
+        proxy = True
index 646acab..aebd7d6 100644 (file)
@@ -4,6 +4,7 @@ from datetime import date, datetime
 from dateutil.relativedelta import relativedelta
 
 from auf.django.permissions.decorators import get_object
+from auf.django.references import models as ref
 from django.contrib import messages
 from django.contrib.auth.decorators import login_required, user_passes_test
 from django.contrib.contenttypes.models import ContentType
@@ -44,7 +45,7 @@ from project.decorators import redirect_interdiction,\
 from project.rh import models as rh
 from project import groups
 
-
 # Helpers
 
 def devises():
@@ -288,6 +289,14 @@ def poste(request, key=None):
             financementForm = FinancementForm(instance=poste)
             comparaisons_formset = PosteComparaisonForm(instance=poste)
 
+
+    # Modify queryset so that it is limited to users' rights:
+    imp_qs = dae.ProxyImplantation.dae_manager.ma_region_ou_service(
+        request.user)
+        
+    for cmp_form in comparaisons_formset.forms:
+        cmp_form.fields['implantation'].queryset = imp_qs
+
     vars.update(dict(
         form=form, poste=poste, poste_key=key, piecesForm=piecesForm,
         financementForm=financementForm,
@@ -560,6 +569,15 @@ def embauche(request, key=None, dossier_id=None):
                 )
     except dae.Poste.DoesNotExist:
         comparaisons_internes = []
+
+    # Modify queryset so that it is limited to users' rights:
+    imp_qs = dae.ProxyImplantation.dae_manager.ma_region_ou_service(
+        request.user)
+        
+    for cmp_form in comparaisons_formset.forms:
+        cmp_form.fields['implantation'].queryset = imp_qs
+
+
     c = {
         'type_remun': filtered_type_remun(),
         'devises': devises(),