[#2190] N'afficher que les comparaisons internes que l'utilisateur a le droit de...
authorEric Mc Sween <eric.mcsween@auf.org>
Mon, 7 Nov 2011 22:00:33 +0000 (17:00 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Mon, 7 Nov 2011 22:00:33 +0000 (17:00 -0500)
project/dae/managers.py
project/dae/models.py
project/dae/templates/dae/poste_resume.html
project/dae/views.py

index 8e54d12..3135e35 100644 (file)
@@ -64,7 +64,8 @@ class SecurityManager(models.Manager):
         q = Q(**{ self.prefixe_implantation : employe.implantation.region })
 
         # SERVICE
-        if workflowed_model and grp_service_utilisateurs in user.groups.all():
+        if self.prefixe_service and workflowed_model and \
+           grp_service_utilisateurs in user.groups.all():
             q = q | Q(**{ self.prefixe_service : employe.service})
 
         liste = self.get_query_set().filter(q)
@@ -139,3 +140,6 @@ class DossierManager(SecurityManager):
         return super(DossierManager, self).ma_region_ou_service(user).filter(poste__actif=True)
 
 
+class PosteComparaisonManager(SecurityManager):
+    use_for_related_fields = True
+    prefixe_implantation = "implantation__region"
index 1e83eb7..ebfbc50 100644 (file)
@@ -8,7 +8,7 @@ import reversion
 from workflow import PosteWorkflow, DossierWorkflow
 from workflow import DOSSIER_ETAT_DRH_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION, \
                      DOSSIER_ETAT_FINALISE
-from managers import DossierManager, PosteManager
+from managers import DossierManager, PosteManager, PosteComparaisonManager
 import datamaster_modeles.models as ref
 from rh_v1 import models as rh
 
@@ -57,8 +57,8 @@ class Poste(PosteWorkflow, models.Model):
 
     # Contrat
     regime_travail = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=REGIME_TRAVAIL_DEFAULT, 
-                            verbose_name="Temps de travail", 
+                            default=REGIME_TRAVAIL_DEFAULT,
+                            verbose_name="Temps de travail",
                             help_text="% du temps complet")
     regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12,
                             decimal_places=2,
@@ -67,7 +67,7 @@ class Poste(PosteWorkflow, models.Model):
 
     # Recrutement
     local = models.BooleanField(verbose_name="Local", default=True, blank=True)
-    expatrie = models.BooleanField(verbose_name="Expatrié", default=False, 
+    expatrie = models.BooleanField(verbose_name="Expatrié", default=False,
                             blank=True)
     mise_a_disposition = models.BooleanField(verbose_name="Mise à disposition")
     appel = models.CharField(max_length=10, default='interne',
@@ -140,9 +140,9 @@ class Poste(PosteWorkflow, models.Model):
 
     def _get_key(self):
         """
-        Les vues sont montées selon une clef spéciale 
+        Les vues sont montées selon une clef spéciale
         pour identifier la provenance du poste.
-        Cette méthode fournit un moyen de reconstruire cette clef 
+        Cette méthode fournit un moyen de reconstruire cette clef
         afin de générer les URLs.
         """
         return "dae-%s" % self.id
@@ -151,11 +151,11 @@ class Poste(PosteWorkflow, models.Model):
     def get_dossiers(self):
         """
         Liste tous les anciens dossiers liés à ce poste.
-        (Le nom de la relation sur le rh.Poste est mal choisi 
+        (Le nom de la relation sur le rh.Poste est mal choisi
         poste1 au lieu de dossier1)
         Note1 : seulement le dosssier principal fait l'objet de la recherche.
-        Note2 : les dossiers sont retournés du plus récent au plus vieux. 
-        (Ce test est fait en fonction du id, 
+        Note2 : les dossiers sont retournés du plus récent au plus vieux.
+        (Ce test est fait en fonction du id,
         car les dates de création sont absentes de rh v1).
         """
         if self.id_rh is None:
@@ -165,7 +165,7 @@ class Poste(PosteWorkflow, models.Model):
 
     def get_complement_nom(self):
         """
-        Inspecte les modèles rh v1 pour trouver dans le dernier dossier 
+        Inspecte les modèles rh v1 pour trouver dans le dernier dossier
         un complément de titre de poste.
         """
         dossiers = self.get_dossiers()
@@ -186,7 +186,7 @@ class Poste(PosteWorkflow, models.Model):
             return None
 
     def get_default_devise(self):
-        """Récupère la devise par défaut en fonction de l'implantation 
+        """Récupère la devise par défaut en fonction de l'implantation
         (EUR autrement)
         """
         try:
@@ -301,7 +301,7 @@ class Poste(PosteWorkflow, models.Model):
             return False
         else:
             return True
-    
+
 
     def get_taux_comparaison(self):
         try:
@@ -342,7 +342,7 @@ class Poste(PosteWorkflow, models.Model):
 
     def __unicode__(self):
         """
-        Cette fonction est consommatrice SQL car elle cherche les dossiers 
+        Cette fonction est consommatrice SQL car elle cherche les dossiers
         qui ont été liés à celui-ci.
         """
         complement_nom_poste = self.get_complement_nom()
@@ -399,6 +399,8 @@ class PosteComparaison(models.Model):
     montant = models.IntegerField(null=True)
     devise = models.ForeignKey(rh.Devise, default=5, related_name='+', null=True, blank=True)
 
+    objects = PosteComparaisonManager()
+
     def taux_devise(self):
         if self.devise.code == 'EUR':
           return 1
@@ -675,7 +677,7 @@ class Dossier(DossierWorkflow, models.Model):
 
     def get_total_remunerations_tierces(self):
         total = 0.0
-        for r in self.get_remunerations_tierces():    
+        for r in self.get_remunerations_tierces():
             total += r.montant_euro()
         return total
 
index 1303bf1..da61279 100644 (file)
 
 <fieldset>
 <h2>Éléments de comparaison (interne)</h2>
-{% if poste.comparaisons_internes.count > 0 %}
+{% if comparaisons_internes.count > 0 %}
 <table>
     <tbody>
     <tr>
         <th>Montant</th>
         <th>EUR</th>
     </tr>
-    {% for poste_connexe in poste.comparaisons_internes.all %}
+    {% for poste_connexe in comparaisons_internes.all %}
     <tr>
         <td>{{ poste_connexe.classement }}</td>
         <td>{{ poste_connexe.statut }}</td>
index 41f0f18..c5cdb69 100644 (file)
@@ -97,8 +97,13 @@ def poste_consulter(request, key):
     else:
         validationForm = PosteWorkflowForm(instance=poste, request=request)
 
-    vars = {'poste' : poste, 'validationForm' : validationForm, }
+    comparaisons_internes = poste.comparaisons_internes.ma_region_ou_service(request.user)
 
+    vars = {
+        'poste': poste,
+        'validationForm': validationForm,
+        'comparaisons_internes': comparaisons_internes
+    }
 
     mode = request.GET.get('mode', None)
     if mode is None:
@@ -477,7 +482,7 @@ def dossier(request, poste_key, employe_key):
       except (rh.Dossier.DoesNotExist):
           dossier_rh = rh.Dossier()
 
-      # on tente de récupérer le dossier DAE, au pire on le contruit en le 
+      # on tente de récupérer le dossier DAE, au pire on le contruit en le
       # prépoluant avec son dossier rh v1.
       try:
           dossier = dae.Dossier.objects.get(employe=employe_dae, poste=poste)