From 319f5636a457e3974aa11407f7b0ada7118c5cbe Mon Sep 17 00:00:00 2001 From: pauget Date: Tue, 7 Sep 2004 18:16:41 +0200 Subject: [PATCH] Rapport de bug automatique. darcs-hash:20040907161641-41617-48930368bbf4bf511760b2121231597a39b49955.gz --- gestion/gest_crans.py | 51 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index eea75593..69140aea 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -17,13 +17,17 @@ Les fonction select permettent de choisir un objet dans la base Retournent None si pas d'objet trouvé. """ +### Rapport de bug automatique +# Destinataires, si vide n'envoi rien +To = 'fred@crans.org' + import string, os, sys from whos import aff import time, signal, getopt import affich_tools, config from lock import make_lock, remove_lock -from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles +from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles, smtpserv def dialog(arg) : return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg) @@ -1504,7 +1508,7 @@ def killed(a,z) : if __name__ == '__main__' : global db, debug - debug = 1 + debug = 0 signal.signal(signal.SIGTERM,killed) # Interception du signal TERM signal.signal(signal.SIGINT,signal.SIG_DFL) # Comportement normal de Ctrl-C @@ -1540,14 +1544,43 @@ if __name__ == '__main__' : exit = c except : if not debug : os.system('clear') - print """Une erreur fatale c'est produite durant l'exécution. -Pour l'amélioration de ce programme merci de prévenir nounou en spécifiant la -marche à suivre pour reproduire cette erreur.""" + print """Une erreur fatale c'est produite durant l'exécution.""" + + # Report de bug + import traceback + from cStringIO import StringIO + from smtplib import SMTP + + s = StringIO() + sys.stderr = s + traceback.print_exc() + sys.stderr = sys.__stderr__ + traceback = s.getvalue() + try : + if To : + # Paramètres pour le mail + From = os.getlogin() + '@crans.org' + + entete_mail = """From: Crans <%s> +To: %s +Subject: Bugreport %s + +""" % ( From, To, sys.argv[0].split('/')[-1] ) + + # Envoi mail + conn = SMTP(smtpserv) + conn.sendmail(From, To , entete_mail + traceback ) + conn.quit() + sys.stderr.write("Un rapport de bug à été automatiquement envoyé.\n") + else : + print "Merci de faire parvenir un rapport de bug à nounou" + except : + sys.stderr.write("Impossible d'envoyer le rapport de bug.\n") + if debug : print '-'*40 print 'Détails techniques :' - import traceback - traceback.print_exc() + sys.stderr.write(traceback) print '-'*40 exit = 1 @@ -1563,9 +1596,9 @@ marche if serv : mn = int(time.strftime('%M')) # Restart toutes les 10 min : 03, 13, 23, 33, 43, 53 - t = ( 14 - mn % 10 ) % 10 # On prend en plus une marge de 1 min + t = ( 17 - mn % 10 ) % 10 # On prend en plus une marge de 4 min if t == 0 : t = 10 - print "Les modifications apportées à la base seront prises en compte dans %imin environ +/- 3 jours." % t + print "Les modifications apportées à la base seront prises en compte dans %imin environ." % t if debug : print "Les services suivants seront redémarrés: " print ', '.join(serv.keys())