[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
# -*- 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 <adresse>]
%(prog)s {liste|modif|spam} [--debug <adresse>]
L'unique option est :
--debug <adresse> envoyer tous les mails à l'<adresse> 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)
# On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier
todo_list = liste_charte_nok()
#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
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,15 +154,19 @@ 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')