À finir : Travail calcul jours ouvrés entre 2 dates
authorAlicia FLOREZ <alicflorez@gmail.com>
Wed, 29 May 2013 09:25:52 +0000 (11:25 +0200)
committerAlicia FLOREZ <alicflorez@gmail.com>
Wed, 29 May 2013 09:25:52 +0000 (11:25 +0200)
axes.py

diff --git a/axes.py b/axes.py
index 7989c5b..f448c07 100644 (file)
--- a/axes.py
+++ b/axes.py
@@ -3,6 +3,7 @@
 '''
 
 from openerp.osv import osv, fields
+from datetime import *
 
 
 class Mesurable(osv.Model):
@@ -46,6 +47,75 @@ class Mesurable(osv.Model):
     ]
 
 
+#=============== TODO TRAVAIL CALCUL JOURS OUVRES ==============================
+#    def _annee_bissextile(self, annee): # TODO vérifier le besoin de self
+#        """ Retourne vrai si l'année est bissextile, faux sinon. """
+#        return (annee % 4 == 0 and annee % 100 != 0 or  annee % 400 == 0)
+#
+#
+#    def _get_date_paques(self, annee): # TODO vérifier le besoin de self
+#        """
+#        Retourne la date du dimanque de pâques pour une année donnée
+#            sous la forme d'un objet date.
+#        """
+#        a = annee % 19
+#        b = annee // 100
+#        c = annee % 100
+#        d = (19 * a + b - b // 4 - ((b - (b + 8) // 25 + 1) // 3) + 15) % 30
+#        e = (32 + 2 * (b % 4) + 2 * (c // 4) - d - (c % 4)) % 7
+#        f = d + e - 7 * ((a + 11 * d + 22 * e) // 451) + 114
+#        mois = f // 31
+#        jours = f % 31 + 1
+#        return date(annee, mois, jours)
+#
+#
+#    def get_jours_feries(self, annee):
+#        """
+#        Retourne une liste contenant les jours fériés d'une année donnée.
+#        """
+#        date_paques = _get_date_paques(self, annee)
+#        return [
+#            date_paques+timedelta(days=1), # Lundi de Pâques
+#            date_paques+timedelta(days=39), # Jeudi de l'Ascension
+#            date_paques+timedelta(days=50), # Lundi de Pentecôte
+#            date(annee, 1, 1), # Jour de l'An
+#            date(annee, 5, 1), # Fête du travail
+#            date(annee, 5, 8), # Armistice 1945
+#            date(annee, 7, 14), # Fête Nationale
+#            date(annee, 8, 15), # Assomption
+#            date(annee, 11, 1), # Toussaint
+#            date(annee, 11, 11), # Armistice 1918
+#            date(annee, 12, 25), # Noël
+#        ]
+#
+#    def _jour_ouvre(self, d):
+#        """ Retourne vrai si la date est un jour ouvre, faux sinon."""
+#        if (5,6).__contains__(d.weekday()) or _get_jours_feries(d.year).__contains__(d):
+#            return False
+#        else:
+#            return True
+#
+#    def _nb_jours_ouvre_entre_2_dates(self, d1, d2):
+#        """
+#        Retourne le nombre de jours ouvres entre deux dates données.
+#
+#        >>> nb_jours_ouvre_entre_2_dates(date(2013, 5, 1), date(2013, 7, 31))
+#        62
+#        >>> nb_jours_ouvre_entre_2_dates(date(2013, 7, 31), date(2013, 5, 1))
+#        62
+#        """
+#        if d1>d2:
+#            d1, d2 = d2, d1 # Switch les 2 dates pour que d1 soit la plus petite
+#        tmp = d1
+#        jour_ouvres = 0
+#        while tmp <= d2:
+#            if _jour_ouvre(self, tmp): # Si tmp est un jour ouvre
+#                jour_ouvres += 1
+#            tmp += timedelta(days=1)
+#        return jour_ouvres
+#===============================================================================
+
+
 class Chantier(osv.Model):
     _name = "cmmi.axes.chantier"