Rapport de bug automatique.

darcs-hash:20040907161641-41617-48930368bbf4bf511760b2121231597a39b49955.gz
This commit is contained in:
pauget 2004-09-07 18:16:41 +02:00
parent 1e40e973bd
commit 319f5636a4

View file

@ -17,13 +17,17 @@ Les fonction select permettent de choisir un objet dans la base
Retournent None si pas d'objet trouvé. 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 import string, os, sys
from whos import aff from whos import aff
import time, signal, getopt import time, signal, getopt
import affich_tools, config import affich_tools, config
from lock import make_lock, remove_lock 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) : def dialog(arg) :
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',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__' : if __name__ == '__main__' :
global db, debug global db, debug
debug = 1 debug = 0
signal.signal(signal.SIGTERM,killed) # Interception du signal TERM signal.signal(signal.SIGTERM,killed) # Interception du signal TERM
signal.signal(signal.SIGINT,signal.SIG_DFL) # Comportement normal de Ctrl-C signal.signal(signal.SIGINT,signal.SIG_DFL) # Comportement normal de Ctrl-C
@ -1540,14 +1544,43 @@ if __name__ == '__main__' :
exit = c exit = c
except : except :
if not debug : os.system('clear') if not debug : os.system('clear')
print """Une erreur fatale c'est produite durant l'exécution. 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.""" # 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 : if debug :
print '-'*40 print '-'*40
print 'Détails techniques :' print 'Détails techniques :'
import traceback sys.stderr.write(traceback)
traceback.print_exc()
print '-'*40 print '-'*40
exit = 1 exit = 1
@ -1563,9 +1596,9 @@ marche
if serv : if serv :
mn = int(time.strftime('%M')) mn = int(time.strftime('%M'))
# Restart toutes les 10 min : 03, 13, 23, 33, 43, 53 # 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 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 : if debug :
print "Les services suivants seront redémarrés: " print "Les services suivants seront redémarrés: "
print ', '.join(serv.keys()) print ', '.join(serv.keys())