[admin/controle_chartes_MA.py] Ajout option liste
darcs-hash:20091207145023-ddb99-ce4ae29dd673e44dca6d8266b9145a93f0aff0ec.gz
This commit is contained in:
parent
8a27a92b4f
commit
6c68846b28
1 changed files with 42 additions and 45 deletions
|
@ -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 todo_list:
|
||||||
if (len([droit for droit in adh.droits()
|
from smtplib import SMTP
|
||||||
if droit not in ['MultiMachines', 'WebRadio']]) > 0
|
connexion = SMTP()
|
||||||
and not adh.charteMA()):
|
if gethostname().split(".")[0] == 'rouge':
|
||||||
todo_list.append(adh)
|
connexion.connect("localhost")
|
||||||
|
else: connexion.connect("rouge.crans.org")
|
||||||
#print len(todo_list)
|
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:
|
for adh in todo_list:
|
||||||
to = adh.email()
|
to = adh.email()
|
||||||
print to
|
print to
|
||||||
if not debug:
|
if not debug:
|
||||||
data = config.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to}
|
data = config.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('iso-8859-15'))
|
||||||
|
|
||||||
def __usage(message=None):
|
def __usage(message=None):
|
||||||
""" Comment ça marche ? """
|
""" Comment ça marche ? """
|
||||||
|
@ -161,22 +154,26 @@ 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')
|
||||||
spammer()
|
spammer()
|
||||||
else:
|
else:
|
||||||
__usage(u'Commande inconnue : %s' % sys.argv[1])
|
__usage(u'Commande inconnue : %s' % sys.argv[1])
|
||||||
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue