[scripts] Going to utf-8

This commit is contained in:
Pierre-Elliott Bécue 2013-05-04 19:19:36 +02:00
parent c4a19a88ed
commit a1bf0a4547
54 changed files with 676 additions and 573 deletions

View file

@ -1,21 +1,21 @@
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
# Licence : GPLv2
u"""Ce script permet au secrétaire de repérer plus facilement les membres
actifs qui n'ont pas signé la charte du même nom.
u"""Ce script permet au secrétaire de repérer plus facilement les membres
actifs qui n'ont pas signé la charte du même nom.
Utilisation :
%(prog)s {liste|modif|spam} [--debug <adresse>]
L'unique option est :
--debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
--debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
qu'aux vrais destinataires
Les commandes sont :
* liste énumérer les membres n'ayant pas signé la charte
* modif modifier les membres actifs n'ayant pas signé la charte
* liste énumérer les membres n'ayant pas signé la charte
* modif modifier les membres actifs n'ayant pas signé la charte
* spam envoie des mails de rappel pour les chartes
"""
@ -29,7 +29,7 @@ from email_tools import send_email, parse_mail_template
# Fonctions d'affichage
from affich_tools import coul, tableau, prompt, cprint
# Importation de la base de données
# Importation de la base de données
from ldap_crans import crans_ldap, ann_scol
db = crans_ldap()
@ -44,12 +44,12 @@ if __name__ == '__main__':
sys.argv.pop()
if debug:
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
def _controle_interactif_adherents(liste):
"""
Contrôle interactif des adhérents de la liste.
Contrôle interactif des adhérents de la liste.
Retourne (nb_OK, nb_pas_OK).
"""
@ -57,10 +57,10 @@ def _controle_interactif_adherents(liste):
if restant == 0:
return 0, 0
cprint(u'\nContrôle des membre actifs' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u'\nContrôle des membre actifs' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u"")
nb = 0
@ -81,7 +81,7 @@ def _controle_interactif_adherents(liste):
modifiable.charteMA(True)
cprint(modifiable.save())
else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
elif ok == 'n':
if a.charteMA() == True:
modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0]
@ -89,16 +89,16 @@ def _controle_interactif_adherents(liste):
modifiable.charteMA(False)
cprint(modifiable.save())
else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
else:
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
break
return nb, len(liste)-nb
def liste_charte_nok():
"""Retourne la liste des membres actifs qui n'ont pas signé la charte."""
"""Retourne la liste des membres actifs qui n'ont pas signé la charte."""
liste_actifs = db.search('droits=*')['adherent']
liste_nok = []
for adh in liste_actifs:
@ -110,25 +110,25 @@ def liste_charte_nok():
def controle_interactif():
"""
Procédure interactive de contrôle des chartes de membres actifs.
Procédure interactive de contrôle des chartes de membres actifs.
"""
todo_list = liste_charte_nok()
# Tri de la liste des adhérents selon nom, prénom
# Ça peut se faire plus facilement en Python 2.4 avec l'argument key
# Tri de la liste des adhérents selon nom, prénom
# Ça peut se faire plus facilement en Python 2.4 avec l'argument key
todo_list.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom())))
# Zou !
ok, nok = _controle_interactif_adherents(todo_list)
cprint(u'\nRécapitulatif des nouveaux contrôles :', 'violet')
cprint(u'\nRécapitulatif des nouveaux contrôles :', 'violet')
liste = [[u'membres actifs', str(ok), str(nok)]]
cprint(tableau(liste,
titre = [u'Catégorie', u'OK', u'pas OK'],
titre = [u'Catégorie', u'OK', u'pas OK'],
largeur = [15, 10, 10]))
def spammer():
# On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier
# On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier
todo_list = liste_charte_nok()
if todo_list:
@ -144,10 +144,10 @@ def spammer():
print to
if not debug:
data = config.mails.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to}
connexion.sendmail("ca@crans.org",to,data.encode('iso-8859-15'))
connexion.sendmail("ca@crans.org",to,data.encode('utf-8'))
def __usage(message=None):
""" Comment ça marche ? """
""" Comment ça marche ? """
cprint(__doc__ % { 'prog': sys.argv[0] })
if message:
cprint(message)
@ -161,7 +161,7 @@ if __name__ == '__main__' :
elif sys.argv[1] == 'liste':
if len(sys.argv) != 2:
__usage(u'Mauvaise utilisation de liste')
print "Liste des membres actifs n'ayant pas signé la charte :"
print "Liste des membres actifs n'ayant pas signé la charte :"
for adh in liste_charte_nok():
print adh.Nom()
elif sys.argv[1] == 'modif':