[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
|
||||
# -*- 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)
|
||||
|
||||
#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)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue