ajout des managers pour optimiser la génération du form
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 4 Apr 2011 19:19:15 +0000 (15:19 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 4 Apr 2011 19:19:15 +0000 (15:19 -0400)
project/dae/models.py
project/rh_v1/models.py

index 1432b14..52e3db1 100644 (file)
@@ -21,6 +21,26 @@ POSTE_STATUT_CHOICES = (
 )
 
 
+
+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 Poste(models.Model):
     # Modèle existant
     id_rh = models.ForeignKey(rh.Poste, null=True, related_name='+',
@@ -93,6 +113,9 @@ class Poste(models.Model):
     date_fin = models.DateField(null=True, help_text="format: aaaa-mm-jj")
     actif = models.BooleanField(default=True)
 
+    # Managers
+    objects = PosteManager()
+
     def __unicode__(self):
         return u'%s - %s (%s)' % (self.implantation, self.type_poste.nom,
                                   self.nom)
index 2f21e85..df0d804 100644 (file)
@@ -43,6 +43,27 @@ TYPE_DOSSIER_CHOICES = (
     ('1', 'Expatrié'),
 )
 
+class DossierManager(models.Manager):
+    """
+    Chargement de tous les objets FK existants sur chaque QuerySet.
+    """
+    def get_query_set(self):
+        fkeys = (
+            'employe',
+            'poste1',
+            'implantation1',
+            'poste2',
+            'implantation2',
+            'service',
+            'responsable',
+            'remplacement_de',
+            'statut',
+            'organisme_bstg',
+            'classement',
+            'type_contrat',
+        )
+        return super(DossierManager, self).get_query_set().select_related(*fkeys).all()
+
 class Dossier(models.Model):
     #Identification
     id = models.IntegerField(primary_key=True)
@@ -79,6 +100,9 @@ class Dossier(models.Model):
     date_maj = models.DateField(auto_now=True)
     commentaire = models.TextField(null=True, blank=True) 
 
+    # Managers
+    objects = DossierManager()
+
 LIEN_PARENTE_CHOICES = (
     ('Conjoint', 'Conjoint'),
     ('Conjointe', 'Conjointe'),
@@ -176,6 +200,17 @@ PROPORTION_CHOICES = (
     ('1', '1'),
 )
 
+class PosteManager(models.Manager):
+    """
+    Chargement de tous les objets FK existants sur chaque QuerySet.
+    """
+    def get_query_set(self):
+        fkeys = (
+            'implantation',
+            'type_poste',
+        )
+        return super(PosteManager, self).get_query_set().select_related(*fkeys).all()
+
 class Poste(models.Model):
     #Identification
     id = models.IntegerField(primary_key=True)
@@ -188,6 +223,9 @@ class Poste(models.Model):
     date_modification = models.DateField(auto_now=True)
     actif = models.BooleanField()
 
+    # Managers
+    objects = PosteManager()
+
     def __unicode__(self):
         return u'%s - %s' % (self.implantation, self.type_poste.nom)