#! /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 = 'root@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-Aères d'échappement qui vont bien pour la couleur ?-b 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