Ajout d'une option pour limiter la période de recherche de factures

This commit is contained in:
Pierre-Elliott Bécue 2015-10-18 20:12:10 +02:00
parent 32e4416687
commit d49c87b6c3

View file

@ -34,6 +34,8 @@ en masse.
La construction est un peu méta pour éviter la redondance
de code."""
#pylint: disable=line-too-long
import argparse
import sys
@ -59,6 +61,16 @@ STYLES = {
'modePaiement': 'bleu',
}
def str_to_gtf(time_str):
"""Retourne un GTF sans timezone depuis un truc au format
JJ/MM/AAAA HH:MM:SS"""
date, heure = time_str.split()
jour, mois, annee = date.split("/")
heure, minute, seconde = heure.split(":")
return "%s%s%s%s%s%s" % (annee, mois, jour, heure, minute, seconde)
# Tout commence ici.
def traiter_factures(ldap, args):
"""Liste les factures et les trie suivant trois catégories
@ -376,7 +388,19 @@ def trie_factures(ldap, args):
controle_non = []
sans_controle = []
filtre = u"(&(fid=*)(recuPaiement=*)%(modes)s)"
if not args.last:
args.last = crans_utils.localized_datetime()
else:
args.last = crans_utils.localized_datetime(str_to_gtf(args.last))
if not args.begin:
args.begin = args.last.replace(year=args.last.year-1)
else:
args.begin = crans_utils.localized_datetime(str_to_gtf(args.begin))
_begin = crans_utils.datetime_to_generalized_time_format(args.begin)
_last = crans_utils.datetime_to_generalized_time_format(args.last)
filtre = u"(&(fid=*)(recuPaiement>=%(begin)s)(recuPaiement<=%(end)s)%(modes)s)"
if args.mode:
_modes = args.mode.split(',')
@ -387,6 +411,8 @@ def trie_factures(ldap, args):
filtre = filtre % {
'modes': _modes,
'begin': _begin,
'end': _last,
}
factures = ldap.search(filterstr=filtre, mode="w", sizelimit=0)
@ -401,11 +427,11 @@ def trie_factures(ldap, args):
return controle_ok, controle_non, sans_controle
if __name__ == '__main__':
(COLONNES, LIGNES) = affichage.getTerminalSize()
PARSER = argparse.ArgumentParser(description="Script d'analyse d'échange de données entre un truc et un autre.", add_help=False)
PARSER.add_argument("-l", "--last", help="Date de début, dans un format compréhensible par postgresql (\"AAAA/MM/JJ HH:MM:SS\" fonctionne bien)", type=str, action="store")
PARSER.add_argument("-b", "--begin", help="Date de début, au format \"JJ/MM/AAAA HH:MM:SS\"", type=str, action="store")
PARSER.add_argument("-l", "--last", help="Date de fin, au format \"JJ/MM/AAAA HH:MM:SS\"", type=str, action="store")
PARSER.add_argument("-m", "--mode", help="Filtre sur le mode de paiement", type=str, action="store")
PARSER.add_argument("-h", "--help", help="Affiche cette aide et quitte.", action="store_true")
PARSER.add_argument("-t", "--tri", help="Trie les factures suivant l'aid ou le fid", type=str, action="store")