Utilise date.today() pour comparaison pour chercher dossier principal
authorBenoit C. Sirois <benoit.clennett-sirois@auf.org>
Tue, 12 Mar 2013 13:41:01 +0000 (09:41 -0400)
committerBenoit C. Sirois <benoit.clennett-sirois@auf.org>
Tue, 12 Mar 2013 13:41:01 +0000 (09:41 -0400)
project/rh/models.py

index e58945a..b57d9b6 100644 (file)
@@ -591,27 +591,50 @@ class Employe(models.Model):
         q = search.get_q_temporel(self.rh_dossiers)
         return self.rh_dossiers.filter(q)
 
-    def dossier_principal(self, year=None):
+    def dossier_principal_pour_annee(self):
+        return self.dossier_principal(pour_annee=True)
+
+    def dossier_principal(self, pour_annee=False):
         """
         Retourne le dossier principal (ou le plus ancien si il y en a
         plusieurs)
+
+        Si pour_annee == True, retourne le ou les dossiers principaux
+        pour l'annee en cours, sinon, le ou les dossiers principaux
+        pour la journee en cours.
+
+        TODO: (Refactoring possible): Utiliser meme logique dans
+        dae/templatetags/dae.py
         """
-        if not year:
-            year = date.today().year
-        year_start = date(year, 1, 1)
-        year_end = date(year, 12, 31)
+        
+        today = date.today()
+        if pour_annee:
+            year = today.year
+            year_start = date(year, 1, 1)
+            year_end = date(year, 12, 31)
             
-        try:
-            dossier = self.rh_dossiers.filter(
-                (Q(date_debut__lte=year_end, date_fin=None) |
-                 Q(date_debut=None, date_fin__gte=year_start) |
-                 Q(date_debut=None, date_fin__gte=year_start) |
-                 Q(date_debut__lte=year_end, date_fin__gte=year_start) |
-                 Q(date_debut=None, date_fin=None)) &
-                Q(principal=True)).order_by('date_debut')[0]
-        except IndexError, Dossier.DoesNotExist:
-            dossier = None
-        return dossier
+            try:
+                dossier = self.rh_dossiers.filter(
+                    (Q(date_debut__lte=year_end, date_fin__isnull=True) |
+                     Q(date_debut__isnull=True, date_fin__gte=year_start) |
+                     Q(date_debut__lte=year_end, date_fin__gte=year_start) |
+                     Q(date_debut__isnull=True, date_fin__isnull=True)) &
+                    Q(principal=True)).order_by('date_debut')[0]
+            except IndexError, Dossier.DoesNotExist:
+                dossier = None
+            return dossier
+        else:
+            try:
+                dossier = self.rh_dossiers.filter(
+                    (Q(date_debut__lte=today, date_fin__isnull=True) |
+                     Q(date_debut__isnull=True, date_fin__gte=today) |
+                     Q(date_debut__lte=today, date_fin__gte=today) |
+                     Q(date_debut__isnull=True, date_fin__isnull=True)) &
+                    Q(principal=True)).order_by('date_debut')[0]
+            except IndexError, Dossier.DoesNotExist:
+                dossier = None
+            return dossier
+                
 
     def postes_encours(self):
         postes_encours = set()