[mail_invalide.py] Lit aussi les .forward, et permet de generer via un aid
Ignore-this: 83e846453108548ad3689197d7ef5334 darcs-hash:20110911191456-ddb99-ffb39ebb58639294b2874962f972a742ace55067.gz
This commit is contained in:
parent
16cb2af317
commit
bec9689f42
1 changed files with 57 additions and 10 deletions
|
@ -33,11 +33,17 @@ Une fiche sera générée pour chaque adhérent.
|
||||||
Chaque adhérent sera déconnecté 2 semaines plus tard si son adresse mail
|
Chaque adhérent sera déconnecté 2 semaines plus tard si son adresse mail
|
||||||
n'a pas changé.
|
n'a pas changé.
|
||||||
|
|
||||||
Usage: mail_invalide.py [adresse mail]..."""
|
Usage: mail_invalide.py [adresse mail]...
|
||||||
|
|
||||||
|
L'adresse mail peut aussi être un aid précédé d'un tiret.
|
||||||
|
Exemple:
|
||||||
|
mail_invalide.py toto@example.com -42
|
||||||
|
va s'occuper de l'adhérent ayant toto@example.com comme adresse mail et
|
||||||
|
l'adhérent ayant l'aid 42."""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def generate_ps(proprio):
|
def generate_ps(proprio, mail):
|
||||||
"""On génère la feuille d'avertissement et on retourne son emplacement."""
|
"""On génère la feuille d'avertissement et on retourne son emplacement."""
|
||||||
barcode = "/usr/scripts/admin/mail_invalide/barcode.eps"
|
barcode = "/usr/scripts/admin/mail_invalide/barcode.eps"
|
||||||
try:
|
try:
|
||||||
|
@ -55,7 +61,7 @@ def generate_ps(proprio):
|
||||||
template = template.replace('~prenom~', proprio.prenom().encode('utf-8'))
|
template = template.replace('~prenom~', proprio.prenom().encode('utf-8'))
|
||||||
template = template.replace('~nom~', proprio.nom().encode('utf-8'))
|
template = template.replace('~nom~', proprio.nom().encode('utf-8'))
|
||||||
template = template.replace('~chambre~', proprio.chbre().encode('utf-8'))
|
template = template.replace('~chambre~', proprio.chbre().encode('utf-8'))
|
||||||
template = template.replace('~mail~', proprio.email().encode('utf-8').replace('_', '\\_'))
|
template = template.replace('~mail~', mail.encode('utf-8').replace('_', '\\_'))
|
||||||
template = template.replace('~fin~',
|
template = template.replace('~fin~',
|
||||||
time.strftime(format_date, time.localtime(time.time()+14*86400)))
|
time.strftime(format_date, time.localtime(time.time()+14*86400)))
|
||||||
|
|
||||||
|
@ -73,6 +79,15 @@ def generate_ps(proprio):
|
||||||
log(utils.exceptions.formatExc())
|
log(utils.exceptions.formatExc())
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
def set_mail_invalide(adherent, mail):
|
||||||
|
print "Génération de la fiche pour %s :" % adherent.Nom().encode('utf-8')
|
||||||
|
fiche = generate_ps(adherent, mail)
|
||||||
|
print fiche
|
||||||
|
a_imprimer.append(fiche)
|
||||||
|
adherent.blacklist([time.time() + 14 * 24 * 3600,
|
||||||
|
'-', 'mail_invalide', "Mail invalide"])
|
||||||
|
adherent.save()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if '--help' in sys.argv or '-h' in sys.argv or len(sys.argv) < 2:
|
if '--help' in sys.argv or '-h' in sys.argv or len(sys.argv) < 2:
|
||||||
print help
|
print help
|
||||||
|
@ -80,11 +95,49 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
db = crans_ldap()
|
db = crans_ldap()
|
||||||
|
|
||||||
|
# On fait la liste des .forwards dans les homes
|
||||||
|
print " * Lecture des .forward ..."
|
||||||
|
forwards = {}
|
||||||
|
for uid in os.listdir('/home'):
|
||||||
|
try:
|
||||||
|
forwards[open('/home/%s/.forward' % uid, 'r').readline().strip()] = uid
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
a_imprimer = []
|
a_imprimer = []
|
||||||
a_verifier = []
|
a_verifier = []
|
||||||
|
|
||||||
for adresse in sys.argv[1:]:
|
for adresse in sys.argv[1:]:
|
||||||
|
# Est-ce un aid ?
|
||||||
|
if adresse[0] == '-':
|
||||||
|
print " * Recherche de aid=%s ..." % adresse[1:]
|
||||||
|
res = db.search("aid=%s" % adresse[1:], 'w')['adherent']
|
||||||
|
if len(res) == 0:
|
||||||
|
print "*** Erreur : aucun résultat pour aid=%s" % adresse[1:]
|
||||||
|
a_verifier.append(adresse)
|
||||||
|
elif len(res) > 1:
|
||||||
|
print "*** Erreur : plusieurs résultats pour aid=%s :" % adresse[1:]
|
||||||
|
for adh in res:
|
||||||
|
print adh.Nom()
|
||||||
|
a_verifier.append(adresse)
|
||||||
|
else:
|
||||||
|
adherent = res[0]
|
||||||
|
a_imprimer.append(set_mail_invalide(adherent, adherent.email()))
|
||||||
|
continue
|
||||||
|
|
||||||
print " * Recherche de %s ..." % adresse
|
print " * Recherche de %s ..." % adresse
|
||||||
|
# Est-ce un .forward ?
|
||||||
|
if forwards.has_key(adresse):
|
||||||
|
res = db.search("uid=%s" % forwards[adresse], 'w')['adherent']
|
||||||
|
if len(res) == 0:
|
||||||
|
print "*** Erreur : aucun résultat pour uid=%s" % forwards[adresse]
|
||||||
|
a_verifier.append(adresse)
|
||||||
|
else:
|
||||||
|
adherent = res[0]
|
||||||
|
a_imprimer.append(set_mail_invalide(adherent, adresse))
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Est-ce une adresse mail sans compte Cr@ns ?
|
||||||
res = db.search("mail=%s" % adresse, 'w')['adherent']
|
res = db.search("mail=%s" % adresse, 'w')['adherent']
|
||||||
if len(res) == 0:
|
if len(res) == 0:
|
||||||
print "*** Erreur : aucun résultat pour %s" % adresse
|
print "*** Erreur : aucun résultat pour %s" % adresse
|
||||||
|
@ -96,13 +149,7 @@ if __name__ == "__main__":
|
||||||
a_verifier.append(adresse)
|
a_verifier.append(adresse)
|
||||||
else:
|
else:
|
||||||
adherent = res[0]
|
adherent = res[0]
|
||||||
print "Génération de la fiche pour %s :" % adherent.Nom().encode('utf-8')
|
a_imprimer.append(set_mail_invalide(adherent, adherent.email()))
|
||||||
fiche = generate_ps(adherent)
|
|
||||||
print fiche
|
|
||||||
a_imprimer.append(fiche)
|
|
||||||
adherent.blacklist([time.time() + 14 * 24 * 3600,
|
|
||||||
'-', 'mail_invalide', "Mail invalide"])
|
|
||||||
adherent.save()
|
|
||||||
|
|
||||||
if len(a_verifier) + len(a_imprimer) > 0:
|
if len(a_verifier) + len(a_imprimer) > 0:
|
||||||
print ''
|
print ''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue