En cas de bugs plutot que de logguer ca chez cups on maile le traceback

darcs-hash:20050614171501-c3cc4-2b1d6660595688945edf1aae84c111ec410e99d0.gz
This commit is contained in:
dubost 2005-06-14 19:15:01 +02:00
parent 8f04d42799
commit 1e1b88697a

View file

@ -7,11 +7,7 @@
# Licence : GNU General Public Licence, version 2 # Licence : GNU General Public Licence, version 2
#TODO #TODO
#Recuperer le nom de pa machine dans les arguments #Parser ce que réponds l'imprimante
#pour l'envoyer a pjl_comm
#il est dans envp[11]="DEVICE_URI=laserjet://laserjet"
#
#Lire ce que reponds l'imprimante jusqu'a voir pages
# #
import sys,os import sys,os
@ -22,6 +18,8 @@ sys.path.append('/usr/scripts/gestion')
from config import impression from config import impression
from ldap_crans import crans_ldap from ldap_crans import crans_ldap
import tempfile import tempfile
import time
base=crans_ldap() base=crans_ldap()
@ -112,13 +110,6 @@ else :
#si on ne trouve rien #si on ne trouve rien
if len(res) != 1 : if len(res) != 1 :
sys.stderr.write("ERROR: Erreur : adherent %s non trouvé\n" % user) sys.stderr.write("ERROR: Erreur : adherent %s non trouvé\n" % user)
# import smtplib
# conn = smtplib.SMTP('localhost')
# titre="L\'adherent n\'existe pas"
# corps="Ceci est surement un probleme dans la base\nL\'utilisateur %s existe dans le fichier de mot de passe mais n\'est pas dans la base ldap" %user
# conn.sendmail(From_imprimante, From_imprimante , mail_err % (sys.argv[1],titre,corps))
# conn.quit()
sys.exit(0) # on ne stoppe pas l'imprimante sys.exit(0) # on ne stoppe pas l'imprimante
adherent=res[0] adherent=res[0]
@ -195,12 +186,12 @@ elif err_solde:
else: else:
#Adaptation de la facture #Adaptation de la facture
if 1: try:
# try:
#Envoi du fichier a l'imprimante #Envoi du fichier a l'imprimante
nom_fic2=tempfile.mktemp() nom_fic2=tempfile.mktemp()
if(prix.recto_v=='Recto'): if(prix.recto_v=='Recto'):
sys.stderr.write("DEBUG: Ceci est un recto simple, on inverse juste l'ordre..\n" ) sys.stderr.write("DEBUG: Ceci est un recto simple, on inverse juste l'ordre..\n" )
os.system("cp %s %s " % (nom_fic, nom_fic2))
os.system("psselect -r %s > %s " % (nom_fic, nom_fic2)) os.system("psselect -r %s > %s " % (nom_fic, nom_fic2))
else: else:
sys.stderr.write("DEBUG: recto verso on permute deux a deux..\n" ) sys.stderr.write("DEBUG: recto verso on permute deux a deux..\n" )
@ -210,13 +201,13 @@ else:
sys.exit(0) sys.exit(0)
else: else:
sys.stderr.write("DEBUG: nombre de faces pair..\n" ) sys.stderr.write("DEBUG: nombre de faces pair..\n" )
os.system("cat %s > %s " % (nom_fic, nom_fic2))
liste_pages="" liste_pages=""
for i in range(1,int(prix.faces/2)+1): for i in range(1,int(prix.faces/2)+1):
liste_pages+=str(2*i)+","+str(2*i-1)+"," liste_pages+=str(2*i)+","+str(2*i-1)+","
#on enleve la virgule superflue #on enleve la virgule superflue
liste_pages=liste_pages[:-1] liste_pages=liste_pages[:-1]
sys.stderr.write("DEBUG: Liste pages : %s\n" % liste_pages ) sys.stderr.write("DEBUG: Liste pages : %s\n" % liste_pages )
os.system("cp %s %s " % (nom_fic, nom_fic2))
os.system("psselect -p%s %s > %s 2>/dev/null" % (liste_pages, nom_fic, nom_fic2)) os.system("psselect -p%s %s > %s 2>/dev/null" % (liste_pages, nom_fic, nom_fic2))
sys.stderr.write("DEBUG: Envoi du fichier..\n" ) sys.stderr.write("DEBUG: Envoi du fichier..\n" )
@ -231,11 +222,13 @@ else:
# imprimante.pjl_command('SET OUTBIN=LOWER') #a tester # imprimante.pjl_command('SET OUTBIN=LOWER') #a tester
# imprimante.pjl_command('SET OUTBIN=UPPER') #a tester # imprimante.pjl_command('SET OUTBIN=UPPER') #a tester
imprimante.write_postscript(nom_fic2, user, nom_adher) imprimante.write_postscript(nom_fic2, user, nom_adher)
os.system("cp %s /tmp/last_printed.ps" % nom_fic2)
os.system("chmod 666 /tmp/last_printed.ps")
os.system("rm %s" % nom_fic2) os.system("rm %s" % nom_fic2)
import time
message=imprimante.pjl_read() message=imprimante.pjl_read()
i=0 i=0
sys.stderr.write("DEBUG: Message : %s\n" %message ) sys.stderr.write("DEBUG: Message de l'imprimante : \n%s\n" %message )
while(message.find("PAGES=")==-1 and i<200): while(message.find("PAGES=")==-1 and i<200):
message=imprimante.pjl_read() message=imprimante.pjl_read()
sys.stderr.write("DEBUG: Message : %s\n" %message ) sys.stderr.write("DEBUG: Message : %s\n" %message )
@ -281,10 +274,23 @@ else:
#envoi du mail avec le code et le prix #envoi du mail avec le code et le prix
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : nom_adher, 'adrmail' : adrmail}, sujet, mail_ok % {'solde' : solde, 'blocage' : str(impression.decouvert), 'code' : code }) prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : nom_adher, 'adrmail' : adrmail}, sujet, mail_ok % {'solde' : solde, 'blocage' : str(impression.decouvert), 'code' : code })
else: except:
# except:
sys.stderr.write("ERROR: Erreur , impression annulée" ) sys.stderr.write("ERROR: Erreur , impression annulée" )
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : nom_adher, 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : u"Le fichier n'a pu être imprimé, veuillez reessayer plus tard.\n"} ) prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : nom_adher, 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : u"Le fichier n'a pu être imprimé, \veuillez reessayer plus tard.\n"} )
# Report de bug
import traceback
from cStringIO import StringIO
s = StringIO()
sys.stderr = s
traceback.print_exc()
sys.stderr = sys.__stderr__
traceback = s.getvalue()
try:
prix.send_mail("Impression <%s>" % impression.From_imprimante , "ERREUR " + sujet, "Une erreur c'est produite lors de cette impression, voici le compte rendu :\n" + traceback)
sys.stderr.write("INFO: Un rapport de bug à été automatiquement envoyé.\n")
except :
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
# On loggue ce que ne loggue pas cups quelquepart ? # On loggue ce que ne loggue pas cups quelquepart ?