[admin/controle_tresorier] plus d'options pour controle_tresorier

options pour changer le critère de tri.

darcs-hash:20081210181938-af139-cebdbfb780ecd7448025504a42046080da4a5e85.gz
This commit is contained in:
Jeremie Dimino 2008-12-10 19:19:38 +01:00
parent bc9a6118cc
commit 4aba28c1a6

View file

@ -8,12 +8,16 @@ u"""Ce script permet au tr
les câbleurs n'ont pas encore rendus.
Utilisations possibles :
* %(prog)s {paiement|carte|list} [--debug <adresse>]
* %(prog)s mail <liste> [--debug <adresse>]
* %(prog)s OPTIONS {paiement|carte|list}
* %(prog)s OPTIONS mail <liste>
L'unique option est :
--debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
Les options sont:
-d, --debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
qu'aux vrais destinataires
-h, --help affiche ce message
-t, --tri <champ> trier suivant ce champ. Les champs possibles sont:
id, nom, cableur ou date. Le défaut est ``nom''
-i, --inverse trier par ordre inverse
Les commandes sont :
* paiement contrôle interactif des nouvelles (-)adhésions
@ -23,6 +27,7 @@ Les commandes sont :
login est dans la <liste>, 'bureau' désignant le mail
récapitulatif envoyé à bureau ; si la liste est vide
tous les mails nécessaires seront envoyés
* help affiche ce message
Le modèle du mail envoyé aux câbleurs est lu sur l'entrée standard (typiquement
via une redirection). Les trois premières lignes doivent être :
@ -35,7 +40,7 @@ sera remplac
Le mail récapitulatif envoyé à bureau est immuable."""
import sys, os, re
import sys, os, re, getopt
sys.path.append('/usr/scripts/gestion')
# Fonctions d'affichage
@ -62,20 +67,14 @@ if u'Tresorier' not in cableur.droits():
from socket import gethostname
debug = False
# Le champ sur lequel on veut trier (id, nom, cableur, date)
trier_par = "nom"
tri_inverse = False
if gethostname().split(".")[0] == 'egon':
debug = 'glondu@crans.org'
ann_scol = 2004
if __name__ == '__main__':
if len(sys.argv) > 3 and sys.argv[-2] == '--debug':
debug = sys.argv[-1]
sys.argv.pop()
sys.argv.pop()
if debug:
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
def _controle_interactif_adherents(liste, quoi):
"""
Contrôle interactif des adhérents de la liste (quoi = p ou c).
@ -192,6 +191,14 @@ def formater_pour_cableur(liste):
lignes.append([a.id(), a.Nom(), date])
total += 1
if trier_par == 'id':
lignes.sort(key = lambda ligne: int(ligne[0]))
else:
champ = {'nom' : 1, 'cableur' : 1, 'date' : 2}[trier_par]
lignes.sort(key = lambda ligne: ligne[champ])
if tri_inverse: lignes.reverse()
return tableau(lignes,
titre = [u'id', u'Nom', u'Date Heure'],
largeur = [6, 40, 18],
@ -213,6 +220,14 @@ def formater_pour_bureau(dico):
lignes.append([a.id(), a.Nom(), cableur, date])
total += 1
if trier_par == 'id':
lignes.sort(key = lambda ligne: int(ligne[0]))
else:
champ = {'nom' : 1, 'cableur' : 2, 'date' : 3}[trier_par]
lignes.sort(key = lambda ligne: ligne[champ])
if tri_inverse: lignes.reverse()
return tableau(lignes,
titre = [u'id', u'Nom', u'Câbleur', u'Date'],
largeur = [6, 40, 18, 18],
@ -381,27 +396,52 @@ def __usage(message=None):
if __name__ == '__main__' :
if len(sys.argv) <= 1:
try:
options, arg = getopt.getopt(sys.argv[1:], 'ht:d:i', [ 'help', 'debug=', 'tri=', 'inverse' ])
except getopt.error, msg:
__usage(unicode(msg))
for opt, val in options:
if opt in [ '-h', '--help' ]:
__usage()
elif opt in [ '-d', '--debug' ]:
debug = val
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
elif opt in [ '-t', '--tri' ]:
if val in [ 'id', 'nom', 'cableur', 'date' ]:
trier_par = val
else:
__usage(u'Champ de tri invalie %s' % val)
elif opt in [ '-i', '--inverse' ]:
tri_inverse = True
else:
__usage("option inconnue « %s »'" % opt)
if len(arg) == 0 or arg[0] == 'help':
__usage()
elif sys.argv[1] == 'paiement':
if len(sys.argv) != 2:
elif arg[0] == 'paiement':
if len(arg) != 1:
__usage(u'Mauvaise utilisation de paiement')
controle_interactif('p')
elif sys.argv[1] == 'carte':
if len(sys.argv) != 2:
elif arg[0] == 'carte':
if len(arg) != 1:
__usage(u'Mauvaise utilisation de carte')
controle_interactif('c')
elif sys.argv[1] == 'list':
if len(sys.argv) != 2:
elif arg[0] == 'list':
if len(arg) != 1:
__usage(u'Mauvaise utilisation de list')
cprint(ControleMailer().recapitulatif(), newline=False)
elif sys.argv[1] == 'mail':
elif arg[0] == 'mail':
mailer = ControleMailer()
cableurs = sys.argv[2:]
cableurs = arg[1:]
if cableurs:
bureau = False
if 'bureau' in cableurs:
@ -424,7 +464,7 @@ if __name__ == '__main__' :
cprint(mailer.mail_bureau())
else:
__usage(u'Commande inconnue : %s' % sys.argv[1])
__usage(u'Commande inconnue : %s' % arg[0])
sys.exit(0)