fin_connexion: prend en compte période transitoire

This commit is contained in:
Daniel STAN 2015-07-23 13:37:33 +02:00
parent 8539e8c38d
commit 7efb8a4db6

View file

@ -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),
}