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:
parent
8f04d42799
commit
1e1b88697a
1 changed files with 35 additions and 29 deletions
|
@ -7,11 +7,7 @@
|
|||
# Licence : GNU General Public Licence, version 2
|
||||
|
||||
#TODO
|
||||
#Recuperer le nom de pa machine dans les arguments
|
||||
#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
|
||||
#Parser ce que réponds l'imprimante
|
||||
#
|
||||
|
||||
import sys,os
|
||||
|
@ -22,6 +18,8 @@ sys.path.append('/usr/scripts/gestion')
|
|||
from config import impression
|
||||
from ldap_crans import crans_ldap
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
|
||||
base=crans_ldap()
|
||||
|
||||
|
@ -105,22 +103,15 @@ else :
|
|||
# Lecture sur stdin
|
||||
entree = sys.stdin
|
||||
|
||||
#recuperation du nom de l'utilisateur
|
||||
user=sys.argv[2]
|
||||
#recuperation de l'adherent en écriture
|
||||
res=base.search("login=%s"%user,'w')['adherent']
|
||||
#si on ne trouve rien
|
||||
if len(res) != 1 :
|
||||
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
|
||||
adherent=res[0]
|
||||
#recuperation du nom de l'utilisateur
|
||||
user=sys.argv[2]
|
||||
#recuperation de l'adherent en écriture
|
||||
res=base.search("login=%s"%user,'w')['adherent']
|
||||
#si on ne trouve rien
|
||||
if len(res) != 1 :
|
||||
sys.stderr.write("ERROR: Erreur : adherent %s non trouvé\n" % user)
|
||||
sys.exit(0) # on ne stoppe pas l'imprimante
|
||||
adherent=res[0]
|
||||
|
||||
|
||||
#\x1B est le caractere d'échappement échap.
|
||||
|
@ -195,12 +186,12 @@ elif err_solde:
|
|||
else:
|
||||
#Adaptation de la facture
|
||||
|
||||
if 1:
|
||||
# try:
|
||||
try:
|
||||
#Envoi du fichier a l'imprimante
|
||||
nom_fic2=tempfile.mktemp()
|
||||
if(prix.recto_v=='Recto'):
|
||||
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))
|
||||
else:
|
||||
sys.stderr.write("DEBUG: recto verso on permute deux a deux..\n" )
|
||||
|
@ -210,13 +201,13 @@ else:
|
|||
sys.exit(0)
|
||||
else:
|
||||
sys.stderr.write("DEBUG: nombre de faces pair..\n" )
|
||||
os.system("cat %s > %s " % (nom_fic, nom_fic2))
|
||||
liste_pages=""
|
||||
for i in range(1,int(prix.faces/2)+1):
|
||||
liste_pages+=str(2*i)+","+str(2*i-1)+","
|
||||
#on enleve la virgule superflue
|
||||
liste_pages=liste_pages[:-1]
|
||||
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))
|
||||
|
||||
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=UPPER') #a tester
|
||||
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)
|
||||
import time
|
||||
message=imprimante.pjl_read()
|
||||
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):
|
||||
message=imprimante.pjl_read()
|
||||
sys.stderr.write("DEBUG: Message : %s\n" %message )
|
||||
|
@ -281,10 +274,23 @@ else:
|
|||
|
||||
#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 })
|
||||
else:
|
||||
# except:
|
||||
except:
|
||||
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 ?
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue