From 6c68846b287374fba09e2a9023ce06b306a2dcf9 Mon Sep 17 00:00:00 2001 From: Michel Blockelet Date: Mon, 7 Dec 2009 15:50:23 +0100 Subject: [PATCH] [admin/controle_chartes_MA.py] Ajout option liste darcs-hash:20091207145023-ddb99-ce4ae29dd673e44dca6d8266b9145a93f0aff0ec.gz --- admin/controle_chartes_MA.py | 87 +++++++++++++++++------------------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/admin/controle_chartes_MA.py b/admin/controle_chartes_MA.py index 2e8ab51f..b3c1d119 100644 --- a/admin/controle_chartes_MA.py +++ b/admin/controle_chartes_MA.py @@ -1,21 +1,22 @@ #! /usr/bin/env python # -*- coding: iso-8859-15 -*- -# Copyright (C) Stéphane Glondu, Alexandre os +# 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. Utilisation : -%(prog)s {modif|spam} [--debug ] +%(prog)s {liste|modif|spam} [--debug ] L'unique option est : --debug envoyer tous les mails à l' indiquée, plutôt qu'aux vrais destinataires Les commandes sont : - * modif enumerer et modifier les membres actifs - * spam envoie des mails de rappel à tous les adhérents + * 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 """ @@ -35,10 +36,6 @@ db = crans_ldap() from socket import gethostname debug = False -if gethostname().split(".")[0] == 'egon': - debug = 'bos@crans.org' - ann_scol = 2007 - if __name__ == '__main__': if len(sys.argv) > 3 and sys.argv[-2] == '--debug': debug = sys.argv[-1] @@ -99,18 +96,22 @@ def _controle_interactif_adherents(liste): return nb, len(liste)-nb +def liste_charte_nok(): + """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: + if (len([droit for droit in adh.droits() + if droit not in ['MultiMachines', 'WebRadio']]) > 0 + and not adh.charteMA()): + liste_nok.append(adh) + return liste_nok + def controle_interactif(): """ Procédure interactive de contrôle des chartes de membres actifs. """ - todo_list = db.search('droits=*')['adherent'] - todo_list1 = db.search('droits=*')['adherent'] - todo_list = [] - for adh in todo_list1: - if (len([droit for droit in adh.droits() - if droit not in ['MultiMachines', 'WebRadio']]) > 0 - and not adh.charteMA()): - todo_list.append(adh) + 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 @@ -126,31 +127,23 @@ def controle_interactif(): largeur = [15, 10, 10])) def spammer(): - # Recherche des membres actifs qui n'ont pas donné le papier - todo_list1 = db.search('droits=*')['adherent'] - todo_list = [] - for adh in todo_list1: - if (len([droit for droit in adh.droits() - if droit not in ['MultiMachines', 'WebRadio']]) > 0 - and not adh.charteMA()): - todo_list.append(adh) - - #print len(todo_list) - - # On envoi un mail à chacun de ces membres actifs - from smtplib import SMTP - connexion = SMTP() - if gethostname().split(".")[0] == 'rouge': - connexion.connect("localhost") - else: connexion.connect("rouge.crans.org") - print "Envoi des mails de rappel pour les chartes des membres actifs" + # On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier + todo_list = liste_charte_nok() + + if todo_list: + from smtplib import SMTP + connexion = SMTP() + if gethostname().split(".")[0] == 'rouge': + connexion.connect("localhost") + else: connexion.connect("rouge.crans.org") + print "Envoi des mails de rappel pour les chartes des membres actifs" - for adh in todo_list: - to = adh.email() - print to - if not debug: - data = config.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to} - connexion.sendmail("ca@crans.org",to,data.encode('iso-8859-15')) + for adh in todo_list: + to = adh.email() + print to + if not debug: + data = config.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to} + connexion.sendmail("ca@crans.org",to,data.encode('iso-8859-15')) def __usage(message=None): """ Comment ça marche ? """ @@ -161,22 +154,26 @@ def __usage(message=None): if __name__ == '__main__' : - + # Utilisation depuis la ligne de commande if len(sys.argv) <= 1: __usage() - + 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 :" + for adh in liste_charte_nok(): + print adh.Nom() elif sys.argv[1] == 'modif': if len(sys.argv) != 2: - __usage(u'Mauvaise utilisation de paiement') + __usage(u'Mauvaise utilisation de modif') controle_interactif() - elif sys.argv[1] == 'spam': if len(sys.argv) != 2: __usage(u'Mauvaise utilisation de spam') spammer() else: __usage(u'Commande inconnue : %s' % sys.argv[1]) - + sys.exit(0)