scripts/gestion/gen_confs/supervison.py
Michel Blockelet 778a51b516 Encodage, pour quand les gens craquent
darcs-hash:20080902112309-ddb99-71e6779db5b7bd86ba8c6c2e8741da42f4224a42.gz
2008-09-02 13:23:09 +02:00

115 lines
3.6 KiB
Python
Executable file

#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# Licence : GPLv2
import sys, smtplib, commands
sys.path.append('/usr/scripts/gestion')
from ldap_crans import smtpserv, crans_ldap, Machine, Adherent, Club
from whos import machine_details, adher_details, club_details
from gen_confs import gen_config
from affich_tools import cprint, OK, anim
class mail:
"""
Envoie un mail à toutes les personnes de la liste 'To', avec les
informations détaillées des objets contenus dans 'objets'
(instances des classes Adherent, Machine ou Club) """
From = 'roots@crans.org'
To = [ 'roots@crans.org' ]
Subject = "Surveillance modifications de la base LDAP"
mail_template = """From: %(From)s
To: %(To)s
Subject: %(Subject)s
%(Text)s"""
# Avec les caractères d'échappement qui vont bien pour la couleur ?
couleur = False
def __init__(self,recherches) :
self.recherches = recherches
def reconfigure(self) :
""" Envoi le mail """
cprint(u'Mail de notification de modifications', 'gras')
a = anim('\tRecherches dans la base',len(self.recherches))
db = crans_ldap()
details = []
vus = []
for rech in self.recherches :
for results in db.search(rech).values() :
for res in results :
if res.dn in vus : continue
vus.append(res.dn)
if isinstance(res, Machine):
details.append(machine_details(res))
elif res.__class__ == Adherent:
details.append(adher_details(res))
elif res.__class__ == Club:
details.append(club_details(res))
a.cycle()
texte = '\n\n- - - - = = = = # # # # # # = = = = - - - -\n\n'.join(details)
a.reinit()
if not details :
print "rien"
return
print OK
anim('\tEnvoi mail')
if not self.couleur :
import sre
texte = sre.sub('\x1b\[1;([0-9]|[0-9][0-9])m','',texte)
conn=smtplib.SMTP(smtpserv)
conn.sendmail(self.From, self.To , \
self.mail_template % { 'From' : self.From,
'To' : ','.join(self.To),
'Subject' : self.Subject,
'Text' : texte.encode('iso8859-15') } )
conn.quit()
print OK
class mail_solde:
"""
Envoie un mail a la ML impression pour les modifications de solde"""
From = 'root@crans.org'
To = [ 'impression@crans.org' ]
Subject = "Modification de solde"
mail_template = """From: %(From)s
To: %(To)s
Subject: %(Subject)s
%(Text)s"""
# Avec les caractères d'échappement qui vont bien pour la couleur ?
couleur = False
def __init__(self,modifs) :
self.modifs = modifs
def reconfigure(self) :
""" Envoi le mail """
cprint(u'Mail de notification de modifications du solde', 'gras')
texte = ''
for modif in self.modifs:
texte = texte + modif.decode('utf-8', 'ignore') + u'\n'
anim('\tEnvoi mail')
conn=smtplib.SMTP(smtpserv)
conn.sendmail(self.From, self.To , \
self.mail_template % { 'From' : self.From,
'To' : ','.join(self.To),
'Subject' : self.Subject,
'Text' : texte.encode('iso8859-15', 'ignore') } )
conn.quit()
print OK