dossier WF
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 2 May 2011 19:32:41 +0000 (15:32 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 2 May 2011 19:32:41 +0000 (15:32 -0400)
project/dae/models.py
project/dae/templates/dae/embauches_liste.html
project/dae/views.py

index 23a34f7..c063de2 100644 (file)
@@ -17,6 +17,7 @@ from workflow import dae_groupes, \
                      grp_service_utilisateurs, \
                      grp_directeurs_service, \
                      grp_correspondants_rh
+from workflow import POSTE_ETAT_HAUTE_DIRECTION, POSTE_ETAT_POLE_FINANCIER
 
 import datamaster_modeles.models as ref
 from rh_v1 import models as rh
@@ -54,24 +55,10 @@ class PostePiece(models.Model):
     nom = models.CharField(verbose_name="Nom", max_length=255)
     fichier = models.FileField(verbose_name="Fichier", upload_to=poste_piece_dispatch, storage=storage_prive)
 
-class PosteManager(models.Manager):
-    """
-    Chargement de tous les objets FK existants sur chaque QuerySet.
-    """
-    def get_query_set(self):
-        fkeys = (
-            'id_rh',
-            'responsable',
-            'implantation',
-            'type_poste',
-            'service',
-            'classement_min',
-            'classement_max',
-            'valeur_point_min',
-            'valeur_point_max',
-        )
-        return super(PosteManager, self).get_query_set() \
-                                        .select_related(*fkeys).all()
+
+class SecurityManager(models.Manager):
+
+    prefixe_implantation = None
 
     def ma_region_ou_service(self, user):
         """
@@ -88,10 +75,10 @@ class PosteManager(models.Manager):
 
         # SERVICE
         if is_user_dans_service(user):
-            q = Q(implantation=employe.implantation)
+            q = Q(**{ '%s' % self.prefixe_implantation : employe.implantation })
         # REGION
         else:
-            q = Q(implantation__region=employe.implantation.region)
+            q = Q(**{ '%s__region' % self.prefixe_implantation : employe.implantation.region })
         liste = self.get_query_set().filter(q)
 
         ############################################
@@ -103,7 +90,7 @@ class PosteManager(models.Manager):
         ############################################
         # TRAITEMENT HAUTE DIRECTION
         ############################################        
-        if grp_pole_financier in user.groups.all():
+        if grp_haute_direction in user.groups.all():
             liste = self.get_query_set().filter(etat=POSTE_ETAT_HAUTE_DIRECTION)
 
         ############################################
@@ -114,6 +101,29 @@ class PosteManager(models.Manager):
         
         return liste
 
+
+class PosteManager(SecurityManager):
+    """
+    Chargement de tous les objets FK existants sur chaque QuerySet.
+    """
+    prefixe_implantation = "implantation"
+
+    def get_query_set(self):
+        fkeys = (
+            'id_rh',
+            'responsable',
+            'implantation',
+            'type_poste',
+            'service',
+            'classement_min',
+            'classement_max',
+            'valeur_point_min',
+            'valeur_point_max',
+        )
+        return super(PosteManager, self).get_query_set() \
+                                        .select_related(*fkeys).all()
+
+
 class Poste(PosteWorkflow, models.Model):
     # Modèle existant
     id_rh = models.ForeignKey(rh.Poste, null=True, related_name='+',
@@ -409,6 +419,10 @@ class DossierPiece(models.Model):
     nom = models.CharField(verbose_name="Nom", max_length=255)
     fichier = models.FileField(verbose_name="Fichier", upload_to=dossier_piece_dispatch, storage=storage_prive)
 
+
+class DossierManager(SecurityManager):
+    prefixe_implantation = "poste__implantation"
+
 class Dossier(DossierWorkflow, models.Model):
 
     # Modèle existant
@@ -485,9 +499,12 @@ class Dossier(DossierWorkflow, models.Model):
     
     # Méta
     date_creation = models.DateTimeField(auto_now_add=True)
-    
+    # Managers
+    objects = DossierManager()
+   
     def __unicode__(self):
-        return u'%s - %s' % (self.poste.nom, self.employe)
+        return u'[%s] %s - %s' % (self.poste.implantation, self.poste.nom, self.employe)
 
     def get_salaire_euros(self):
         try:
index d5e314e..5d702e4 100644 (file)
 <table>
     <tr>
         <th>Embauche</th>
+        <th>Région</th>
+        <th>État</th>
     </tr>
 {% for dossier in embauches %}
     <tr>
         <td><a href="{% url embauche_consulter dossier.id %}">{{ dossier }}</a></td>
+        <td>{{ dossier.poste.implantation.region }}</td>
+        <td>{{ dossier.get_etat_display }}</td>
     </tr>
 {% endfor %}
 </table>
index 4ddc9a5..bf02d0f 100644 (file)
@@ -102,10 +102,6 @@ def postes_liste(request):
     """ Liste des postes. """
     vars = dict()
     vars['postes'] = dae.Poste.objects.ma_region_ou_service(request.user).order_by('-date_creation')
-    #try:
-    #    vars['postes'] = dae.Poste.objects.ma_region_ou_service(request.user).order_by('-date_creation')
-    #except:
-    #    messages.add_message(request, messages.ERROR, u"Votre compte n'a pas été trouvé dans le référientiel des employés, veuillez contacter l'ARI.")
     return render_to_response('dae/postes_liste.html', vars, RequestContext(request))
 
 def filtered_type_remun():
@@ -132,6 +128,7 @@ def get_dossiers_connexes(poste):
 
 
 @dae_groupe_requis
+@poste_dans_ma_region_ou_service
 def embauche_consulter(request, dossier_id):
     dossier = get_object_or_404(dae.Dossier, pk=dossier_id)
 
@@ -282,7 +279,7 @@ def embauche(request, key=None, dossier=None):
 def embauches_liste(request):
     """ Liste des embauches. """
     vars = dict()
-    vars['embauches'] = dae.Dossier.objects.all().order_by('-date_creation')
+    vars['embauches'] = dae.Dossier.objects.ma_region_ou_service(request.user).order_by('-date_creation')
     return render_to_response('dae/embauches_liste.html', vars, RequestContext(request))
 
 def employe(request, key):