[admin/controle_chartes_MA.py] Ajout option liste

darcs-hash:20091207145023-ddb99-ce4ae29dd673e44dca6d8266b9145a93f0aff0ec.gz
This commit is contained in:
Michel Blockelet 2009-12-07 15:50:23 +01:00
parent 8a27a92b4f
commit 6c68846b28

View file

@ -1,21 +1,22 @@
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: iso-8859-15 -*-
# Copyright (C) Stéphane Glondu, Alexandre os # Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
# Licence : GPLv2 # Licence : GPLv2
u"""Ce script permet au secrétaire de repérer plus facilement les membres 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. actifs qui n'ont pas signé la charte du même nom.
Utilisation : Utilisation :
%(prog)s {modif|spam} [--debug <adresse>] %(prog)s {liste|modif|spam} [--debug <adresse>]
L'unique option est : 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 qu'aux vrais destinataires
Les commandes sont : Les commandes sont :
* modif enumerer et modifier les membres actifs * liste énumérer les membres n'ayant pas signé la charte
* spam envoie des mails de rappel à tous les adhérents * 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 from socket import gethostname
debug = False debug = False
if gethostname().split(".")[0] == 'egon':
debug = 'bos@crans.org'
ann_scol = 2007
if __name__ == '__main__': if __name__ == '__main__':
if len(sys.argv) > 3 and sys.argv[-2] == '--debug': if len(sys.argv) > 3 and sys.argv[-2] == '--debug':
debug = sys.argv[-1] debug = sys.argv[-1]
@ -99,18 +96,22 @@ def _controle_interactif_adherents(liste):
return nb, len(liste)-nb 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(): 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 = db.search('droits=*')['adherent'] todo_list = liste_charte_nok()
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)
# Tri de la liste des adhérents selon nom, prénom # 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 # Ç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])) largeur = [15, 10, 10]))
def spammer(): def spammer():
# Recherche 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_list1 = db.search('droits=*')['adherent'] todo_list = liste_charte_nok()
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) 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"
# On envoi un mail à chacun de ces membres actifs for adh in todo_list:
from smtplib import SMTP to = adh.email()
connexion = SMTP() print to
if gethostname().split(".")[0] == 'rouge': if not debug:
connexion.connect("localhost") data = config.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to}
else: connexion.connect("rouge.crans.org") connexion.sendmail("ca@crans.org",to,data.encode('iso-8859-15'))
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'))
def __usage(message=None): def __usage(message=None):
""" Comment ça marche ? """ """ Comment ça marche ? """
@ -161,15 +154,19 @@ def __usage(message=None):
if __name__ == '__main__' : if __name__ == '__main__' :
# Utilisation depuis la ligne de commande
if len(sys.argv) <= 1: if len(sys.argv) <= 1:
__usage() __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': elif sys.argv[1] == 'modif':
if len(sys.argv) != 2: if len(sys.argv) != 2:
__usage(u'Mauvaise utilisation de paiement') __usage(u'Mauvaise utilisation de modif')
controle_interactif() controle_interactif()
elif sys.argv[1] == 'spam': elif sys.argv[1] == 'spam':
if len(sys.argv) != 2: if len(sys.argv) != 2:
__usage(u'Mauvaise utilisation de spam') __usage(u'Mauvaise utilisation de spam')