From: Olivier Larchevêque Date: Mon, 4 Apr 2011 19:19:15 +0000 (-0400) Subject: ajout des managers pour optimiser la génération du form X-Git-Tag: DAE~263 X-Git-Url: https://git.auf.org/?p=auf_rh_dae.git;a=commitdiff_plain;h=1c7d67ce90f81db68f9e6f8b1c70a483087f0151 ajout des managers pour optimiser la génération du form --- diff --git a/project/dae/models.py b/project/dae/models.py index 1432b14..52e3db1 100644 --- a/project/dae/models.py +++ b/project/dae/models.py @@ -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) diff --git a/project/rh_v1/models.py b/project/rh_v1/models.py index 2f21e85..df0d804 100644 --- a/project/rh_v1/models.py +++ b/project/rh_v1/models.py @@ -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)