From 7efb8a4db6d77104aa053cc4c669d467aa1ae13a Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Thu, 23 Jul 2015 13:37:33 +0200 Subject: [PATCH] =?UTF-8?q?fin=5Fconnexion:=20prend=20en=20compte=20p?= =?UTF-8?q?=C3=A9riode=20transitoire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gestion/mail/fin_connexion.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/gestion/mail/fin_connexion.py b/gestion/mail/fin_connexion.py index 3cca14ff..b475908e 100755 --- a/gestion/mail/fin_connexion.py +++ b/gestion/mail/fin_connexion.py @@ -15,6 +15,14 @@ from lc_ldap.variables import base_dn import ldap from affich_tools import coul import gestion.mail as mail_module +import gestion.config as config + +PERIODE_TRANSITOIRE = [ + datetime.datetime.utcfromtimestamp(date).replace(tzinfo=pytz.UTC) + for date in + [config.debut_periode_transitoire, config.fin_periode_transitoire] +] + #: Une journée (c'est plus pratique) DAY = datetime.timedelta(days=1) @@ -82,8 +90,11 @@ def warn(mail_conn, adh): def compute_fin_connexion(adh): """Renvoie le datetime de fin effective de connexion de l'``adh``""" - return min( max(parse_gtf(v.value) for v in adh['fin' + l]) + value = min( max(parse_gtf(v.value) for v in adh['fin' + l]) for l in ['Adhesion', 'Connexion']) + if value >= PERIODE_TRANSITOIRE[0] and value < PERIODE_TRANSITOIRE[1]: + return PERIODE_TRANSITOIRE[1] + return value def select(conn, begin, to, mode='r'): """Récupère les adhérents dont la connexion expire entre les datetimes @@ -93,6 +104,19 @@ def select(conn, begin, to, mode='r'): begin = begin.replace(tzinfo=pytz.UTC) if not to.tzinfo: to = to.replace(tzinfo=pytz.UTC) + + # Si la période considérée contient la liste des gens qui seront déco à la + # fin de la période transitoire (c'est-à-dire qui seront déco à + # PERIODE_TRANSITOIRE[1] ) + if begin <= PERIODE_TRANSITOIRE[1] and to > PERIODE_TRANSITOIRE[1]: + # Alors il est nécessaire de les considérer, donc de selectionner + # à partir du début de la période transitoire, au moins + begin = min(PERIODE_TRANSITOIRE[0], begin) + # Si la période considérée se termine pendant la période transitoire + if to < PERIODE_TRANSITOIRE[1] and to >= PERIODE_TRANSITOIRE[0]: + # Alors, il ne faut considérer que les adhérents qui se font déco avant + # le début de la période transitoire + to = PERIODE_TRANSITOIRE[0] data = { 'debut': begin.strftime(FORMAT_LDAP), 'fin': to.strftime(FORMAT_LDAP), }