select poste (complement)
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 7 Apr 2011 17:35:19 +0000 (13:35 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 7 Apr 2011 17:35:19 +0000 (13:35 -0400)
project/dae/models.py

index 3c1d519..6c280cc 100644 (file)
@@ -132,9 +132,59 @@ class Poste(models.Model):
     # Managers
     objects = PosteManager()
 
+    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 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, car les dates de création sont absentes de rh v1).
+        """
+        if self.id_rh is None:
+            return []
+        postes = [p for p in self.id_rh.poste1.all()]
+        return sorted(postes, key=lambda poste: poste.id, reverse=True)
+            
+    def get_complement_nom(self):
+        """
+        Inspecte les modèles rh v1 pour trouver dans le dernier  dossier un complément de titre de poste.
+        """
+        dossiers = self.get_dossiers()
+        if len(dossiers) > 0:
+            nom = dossiers[0].complement1
+        else:
+            nom = ""
+
+        if nom == "":
+            return None
+        else:
+            return nom
+
+    def get_employe(self):
+        """
+        Inspecte les modèles rh v1 pour trouver l'employé du dernier dossier.
+        """
+        dossiers = self.get_dossiers()
+        if len(dossiers) > 0:
+            return dossiers[0].employe
+        else:
+            return None
+
     def __unicode__(self):
-        return u'%s - %s (%s) [dae-%s]' % (self.implantation, self.type_poste.nom,
-                                  self.nom, self.id)
+        """
+        Cette fonction est consommatrice SQL car elle cherche les dossiers qui ont été liés à celui-ci.
+        """
+        complement_nom_poste = self.get_complement_nom()
+        employe = self.get_employe()
+        data = (
+            self.implantation,
+            self.type_poste.nom,
+            self.nom,
+            self.id,
+            complement_nom_poste,
+            employe,
+        )
+        return u'%s - %s (%s) [dae-%s %s %s]' % data
 
     def DISABLED_save(self, *args, **kwargs):
         # calculate nb_mois = nb of months between date_debut and date_fin