Dplacement d'actions communes dans crans_backend.
Noms de fichiers fournis en utf8. darcs-hash:20050701103051-061a7-abe55bc3fb263b414968e5029796086c702f2795.gz
This commit is contained in:
parent
cc55d751ad
commit
274bced934
2 changed files with 104 additions and 127 deletions
|
@ -8,8 +8,8 @@
|
||||||
# Structure lineaire :
|
# Structure lineaire :
|
||||||
# 1) Preliminaires
|
# 1) Preliminaires
|
||||||
# 2) Recuperation des donnees de l'utilisateur
|
# 2) Recuperation des donnees de l'utilisateur
|
||||||
# 3) Nettoyage du fichier
|
# 3) Calcul du prix de l'impression
|
||||||
# 4) Calcul du prix de l'impression
|
# 4) Formulation du mail
|
||||||
# 5) Envoi du mail
|
# 5) Envoi du mail
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
@ -25,25 +25,15 @@ resource.setrlimit(resource.RLIMIT_RSS, (1024*1024*50, 1024*1024*50))
|
||||||
|
|
||||||
## 1) Preliminaires :
|
## 1) Preliminaires :
|
||||||
|
|
||||||
if len(sys.argv) == 1 :
|
description = '%s devis "Crans" "Mail un devis au demandeur"' % sys.argv[0]
|
||||||
print '%s devis "Crans" "Mail un devis au demandeur"' % sys.argv[0]
|
fic = crans_backend.preliminaires(sys.argv, description)
|
||||||
sys.exit(0)
|
nom_fic = fic.name
|
||||||
|
sys.stderr.write("DEBUG: Fichier %s nettoye.\n" % nom_fic)
|
||||||
if len(sys.argv) not in (6, 7) :
|
|
||||||
sys.stderr.write("ERROR: %s job-id user title copies options [file]\n" % sys.argv[0])
|
|
||||||
sys.exit(1) # Cela stoppe l'imprimante
|
|
||||||
|
|
||||||
if sys.argv[-1].find('/') != -1 :
|
|
||||||
# Fichier fourni
|
|
||||||
entree = open(sys.argv[-1])
|
|
||||||
else :
|
|
||||||
# Lecture sur stdin
|
|
||||||
entree = sys.stdin
|
|
||||||
|
|
||||||
|
|
||||||
## 2) Recuperation de l'utilisateur et de son mail en lecture seule :
|
## 2) Recuperation de l'utilisateur et de son mail en lecture seule :
|
||||||
|
|
||||||
utilisateur = crans_backend.utilisateur(sys.argv[1],sys.argv[2],0)
|
utilisateur = crans_backend.utilisateur(sys.argv[2],0)
|
||||||
|
|
||||||
# Recuperation de l'adresse mail
|
# Recuperation de l'adresse mail
|
||||||
adrmail = utilisateur.mail()
|
adrmail = utilisateur.mail()
|
||||||
|
@ -53,62 +43,63 @@ adrmail = adrmail.encode("iso8859-15")
|
||||||
sys.stderr.write("DEBUG: Utilisateur %s recupere.\n" % utilisateur.Nom())
|
sys.stderr.write("DEBUG: Utilisateur %s recupere.\n" % utilisateur.Nom())
|
||||||
|
|
||||||
|
|
||||||
## 3) Nettoyage du fichier :
|
## 3) Calcul du prix de l'impression :
|
||||||
|
|
||||||
fic = crans_backend.fichier(entree)
|
|
||||||
nom_fic = fic.name
|
|
||||||
sys.stderr.write("DEBUG: Fichier %s nettoye.\n" % nom_fic)
|
|
||||||
|
|
||||||
|
|
||||||
## 4) Calcul du prix de l'impression :
|
|
||||||
|
|
||||||
if "media=transparency" in sys.argv:
|
if "media=transparency" in sys.argv:
|
||||||
prix = crans_backend.calcul_prix(nom_fic, "transparency")
|
prix = crans_backend.calcul_prix(nom_fic, "transparent")
|
||||||
else:
|
else:
|
||||||
prix = crans_backend.calcul_prix(nom_fic, "")
|
prix = crans_backend.calcul_prix(nom_fic, "")
|
||||||
sys.stderr.write("DEBUG: Prix calcule.\n" )
|
sys.stderr.write("DEBUG: Prix calcule : %s euros\n" % prix.c_total_euros)
|
||||||
|
|
||||||
|
|
||||||
|
## 4) Formulation du mail au vue des resultats
|
||||||
|
|
||||||
# Formulation du mail au vue des resultats
|
|
||||||
if prix.c_total_euros > (utilisateur.solde() - impression.decouvert) :
|
if prix.c_total_euros > (utilisateur.solde() - impression.decouvert) :
|
||||||
possible = u"Désolé, je crois que cela ne va pas être possible d'imprimer.\nVous devez alimenter votre compte impression pour pouvoir imprimer ce document."
|
possible = u"""
|
||||||
|
Désolé, je crois que cela ne va pas être possible d'imprimer.
|
||||||
|
Vous devez alimenter votre compte impression pour pouvoir imprimer
|
||||||
|
ce document"""
|
||||||
else :
|
else :
|
||||||
possible = u"Il vous sera possible d'imprimer ce document sur Laserjet."
|
possible = u"""
|
||||||
|
L'impression que vous avez demandé vous coûterait la modique somme
|
||||||
|
de %(prix)s.
|
||||||
|
|
||||||
|
Il vous sera possible d'imprimer ce document sur Laserjet.
|
||||||
|
|
||||||
|
Voici le détail de votre devis, 100 unités correspondant à un
|
||||||
|
remplissage total d'une face A4 :
|
||||||
|
|
||||||
|
* Format : %(format)s
|
||||||
|
* Pour une copie :
|
||||||
|
Noir : %(noir)s unités
|
||||||
|
Couleur : %(couleur)s unités
|
||||||
|
Nombre de faces : %(faces)s
|
||||||
|
Nombre de pages : %(pages)s
|
||||||
|
* Nombre de copies : %(copies)s
|
||||||
|
|
||||||
|
Prix total : %(prix)s"""
|
||||||
|
|
||||||
if prix.format=="NON_VALIDE":
|
if prix.format=="NON_VALIDE":
|
||||||
possible = u"ATTENTION : Le format de papier que vous avez choisi n'est pas valide\n"
|
possible = u"""
|
||||||
possible += u"Il ne vous sera pas possible d'imprimer ce document sur Laserjet.\n"
|
ATTENTION : Le format de papier que vous avez choisi n'est pas valide.
|
||||||
possible += u"Rappel : Si vous utilisez lp il faut définir l'option PageSize"
|
Il ne vous sera pas possible d'imprimer ce document sur Laserjet.
|
||||||
|
|
||||||
|
Rappel : Si vous utilisez lp, il faut définir l'option PageSize"""
|
||||||
|
|
||||||
## 5) Envoi du mail :
|
sujet=u"Devis d'impression n°%(numero)s : %(fichier)s" % {'numero' : sys.argv[1], 'fichier' : unicode(sys.argv[3],"utf-8" ,'replace')}
|
||||||
sujet=u"Devis d'impression n°%(numero)s : %(fichier)s" % {'numero' : sys.argv[1], 'fichier' : sys.argv[3]}
|
|
||||||
mail = u"""
|
mail = u"""
|
||||||
Bonjour,
|
Bonjour,
|
||||||
|
|
||||||
L'impression que vous avez demandé vous sera facturé
|
|
||||||
la modique somme de %%(prix)s.
|
|
||||||
|
|
||||||
Votre compte impression est actuellement crédité de %(solde)s euros.
|
Votre compte impression est actuellement crédité de %(solde)s euros.
|
||||||
|
|
||||||
Rappel : votre compte est bloqué à %(blocage)s euros
|
|
||||||
|
|
||||||
%(possible)s
|
%(possible)s
|
||||||
|
|
||||||
Voici le détail de votre devis
|
|
||||||
|
|
||||||
Résultats de l'analyse :
|
|
||||||
Noir (par face) : %%(noir)s%%%%
|
|
||||||
Couleur (par face) : %%(couleur)s%%%%
|
|
||||||
Nombre de faces (par copie) : %%(faces)s
|
|
||||||
Nombre de pages (par copie) : %%(pages)s
|
|
||||||
Nombre de copies : %%(copies)s
|
|
||||||
Format : %%(format)s
|
|
||||||
Prix total : %%(prix)s
|
|
||||||
|
|
||||||
--
|
--
|
||||||
L'imprimante devis
|
L'imprimante devis
|
||||||
""" % {'solde' : utilisateur.solde(), 'blocage' : str(impression.decouvert), 'possible' : possible}
|
""" % {'solde' : utilisateur.solde(), 'possible' : possible}
|
||||||
|
|
||||||
sys.stderr.write("DEBUG: Tentative d'envoi du mail.\n" )
|
|
||||||
|
## 5) Envoi du mail :
|
||||||
|
|
||||||
try:
|
try:
|
||||||
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail )
|
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail )
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
# Codé par Benoit, Fred et Braice, inspirés par CUPSPykota
|
# Codé par Benoit, Fred et Braice, inspirés par CUPSPykota
|
||||||
# Licence : GNU General Public Licence, version 2
|
# Licence : GNU General Public Licence, version 2
|
||||||
|
|
||||||
#TODO
|
#TODO:
|
||||||
#Parser ce que réponds l'imprimante
|
#Parser ce que réponds l'imprimante
|
||||||
#
|
#Verifier si l'on imprimme bien sur transparent si specifie.
|
||||||
|
|
||||||
import sys, time, tempfile, os
|
import sys, time, tempfile, os
|
||||||
sys.path.append('/usr/scripts/impression')
|
sys.path.append('/usr/scripts/impression')
|
||||||
|
@ -17,59 +17,67 @@ from config import impression
|
||||||
|
|
||||||
## Préliminaires :
|
## Préliminaires :
|
||||||
|
|
||||||
if len(sys.argv) == 1 :
|
description = '%s laserjet "Crans" "Imprime tout en debitant"' % sys.argv[0]
|
||||||
print '%s laserjet "Crans" "Imprime tout en debitant"' % sys.argv[0]
|
fic = crans_backend.preliminaires(sys.argv, description)
|
||||||
sys.exit(0)
|
nom_fic = fic.name
|
||||||
|
sys.stderr.write("DEBUG: Fichier %s nettoye.\n" % nom_fic)
|
||||||
if len(sys.argv) not in (6, 7) :
|
|
||||||
sys.stderr.write("ERROR: %s job-id user title copies options [file]\n" % sys.argv[0])
|
|
||||||
sys.exit(0) # On passe sans stopper
|
|
||||||
|
|
||||||
if sys.argv[-1].find('/') != -1 :
|
|
||||||
# Fichier fourni
|
|
||||||
entree = open(sys.argv[-1])
|
|
||||||
else :
|
|
||||||
# Lecture sur stdin
|
|
||||||
entree = sys.stdin
|
|
||||||
|
|
||||||
|
|
||||||
# Préparation des mails
|
## Récuperation de l'utilisateur en écriture :
|
||||||
|
|
||||||
sujet=u"Impression n°%(numero)s : %(fichier)s" % {'numero' : sys.argv[1], 'fichier' : sys.argv[3]}
|
utilisateur = crans_backend.utilisateur(sys.argv[2],1)
|
||||||
|
|
||||||
|
# Récuperation de l'adresse mail
|
||||||
|
adrmail = utilisateur.mail()
|
||||||
|
if adrmail.find('@') == -1 :
|
||||||
|
adrmail += "@crans.org"
|
||||||
|
adrmail = adrmail.encode("iso8859-15")
|
||||||
|
sys.stderr.write("DEBUG: Utilisateur %s recupere.\n" % utilisateur.Nom())
|
||||||
|
|
||||||
|
|
||||||
|
## Calcul du prix de l'impression :
|
||||||
|
|
||||||
|
if "media=transparency" in sys.argv:
|
||||||
|
prix = crans_backend.calcul_prix(nom_fic, "transparency")
|
||||||
|
else:
|
||||||
|
prix = crans_backend.calcul_prix(nom_fic, "")
|
||||||
|
sys.stderr.write("DEBUG: Prix : %s format %s recto-verso : %s.\n" %(prix.c_total_euros, prix.format, prix.recto_v) )
|
||||||
|
|
||||||
|
## Préparation des mails
|
||||||
|
|
||||||
|
sujet=u"Impression n°%(numero)s : %(fichier)s" % {'numero' : sys.argv[1], 'fichier' : unicode(sys.argv[3],"utf-8" ,'replace')}
|
||||||
|
|
||||||
mail_err = u"""
|
mail_err = u"""
|
||||||
Bonjour,
|
Bonjour,
|
||||||
|
|
||||||
Il y a eu une erreur lors de votre impression
|
Il y a malheureusement eu une erreur lors de votre impression.
|
||||||
|
|
||||||
Le message d'erreur est le suivant :
|
Le message d'erreur est le suivant :
|
||||||
%%(erreur)s
|
%%(erreur)s
|
||||||
|
|
||||||
Si l'erreur se reproduit envoyez un mail à %(adresse_imprimante)s
|
Si l'erreur se reproduit, envoyez un mail à %(adresse_imprimante)s
|
||||||
|
|
||||||
--
|
--
|
||||||
L'imprimante
|
L'imprimante Laserjet
|
||||||
""" % {"adresse_imprimante" : impression.From_imprimante}
|
""" % {"adresse_imprimante" : impression.From_imprimante}
|
||||||
|
|
||||||
|
|
||||||
mail_ok = u"""
|
mail_ok = u"""
|
||||||
Bonjour,
|
Bonjour,
|
||||||
|
|
||||||
|
L'ancien solde de votre compte impression valait %(solde)s euros.
|
||||||
|
|
||||||
L'impression que vous avez demandé coûte la modique somme
|
L'impression que vous avez demandé coûte la modique somme
|
||||||
de %%(prix)s.
|
de %%(prix)s.
|
||||||
|
|
||||||
L'ancien solde de votre compte impression valait %(solde)s euros.
|
|
||||||
|
|
||||||
L'impression s'est correctement effectuée et votre compte a
|
L'impression s'est correctement effectuée et votre compte a
|
||||||
été débité.
|
été débité.
|
||||||
|
|
||||||
Rappel : votre compte est bloqué à %(blocage)s euros
|
|
||||||
|
|
||||||
Pour accéder au local de l'imprimante (4ème étage du Bat J),
|
Pour accéder au local de l'imprimante (4ème étage du Bat J),
|
||||||
le code unique de cette impression est : %(code)s#
|
le code unique de cette impression est : %(code)s#
|
||||||
|
|
||||||
--
|
--
|
||||||
L'imprimante
|
L'imprimante Laserjet
|
||||||
"""
|
"""
|
||||||
|
|
||||||
mail_err_solde = u"""
|
mail_err_solde = u"""
|
||||||
|
@ -82,43 +90,9 @@ En effet, votre solde actuel est de %(solde)s euros et l'impression
|
||||||
coûte %(prix)s euros.
|
coûte %(prix)s euros.
|
||||||
|
|
||||||
--
|
--
|
||||||
L'imprimante
|
L'imprimante Laserjet
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
## Récuperation de l'utilisateur en écriture :
|
|
||||||
|
|
||||||
utilisateur = crans_backend.utilisateur(sys.argv[1],sys.argv[2],1)
|
|
||||||
|
|
||||||
# Récuperation de l'adresse mail
|
|
||||||
adrmail = utilisateur.mail()
|
|
||||||
if adrmail.find('@') == -1 :
|
|
||||||
adrmail += "@crans.org"
|
|
||||||
adrmail = adrmail.encode("iso8859-15")
|
|
||||||
sys.stderr.write("DEBUG: Utilisateur %s recupere.\n" % utilisateur.Nom())
|
|
||||||
|
|
||||||
## Nettoyage du fichier :
|
|
||||||
|
|
||||||
fic = crans_backend.fichier(entree)
|
|
||||||
nom_fic = fic.name
|
|
||||||
sys.stderr.write("DEBUG: Fichier %s nettoye.\n" % nom_fic)
|
|
||||||
|
|
||||||
|
|
||||||
## Calcul du prix de l'impression :
|
|
||||||
|
|
||||||
if "media=transparency" in sys.argv:
|
|
||||||
prix = crans_backend.calcul_prix(nom_fic, "transparency")
|
|
||||||
else:
|
|
||||||
prix = crans_backend.calcul_prix(nom_fic, "")
|
|
||||||
sys.stderr.write("DEBUG: Prix : %s format %s recto-verso : %s.\n" %(prix.c_total_euros,prix.format,prix.recto_v) )
|
|
||||||
|
|
||||||
## Formulation du mail au vue des résultats
|
|
||||||
if not prix.erreur:
|
|
||||||
if prix.c_total_euros > (utilisateur.solde() - impression.decouvert) :
|
|
||||||
err_solde = 1
|
|
||||||
else :
|
|
||||||
err_solde = 0
|
|
||||||
|
|
||||||
debut = """.%%-12345X@PJL SET STRINGCODESET=UTF8
|
debut = """.%%-12345X@PJL SET STRINGCODESET=UTF8
|
||||||
@PJL SET STRINGCODESET=UTF8
|
@PJL SET STRINGCODESET=UTF8
|
||||||
@PJL SET HOLD=ON
|
@PJL SET HOLD=ON
|
||||||
|
@ -138,7 +112,8 @@ if prix.erreur:
|
||||||
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : prix.erreur} )
|
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : prix.erreur} )
|
||||||
|
|
||||||
# Compte non suffisamment approvisionné :
|
# Compte non suffisamment approvisionné :
|
||||||
elif err_solde:
|
elif prix.c_total_euros > (utilisateur.solde() - impression.decouvert) :
|
||||||
|
sys.stderr.write("DEBUG: Pas d'impression : Compte trop bas")
|
||||||
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err_solde % { 'solde' : utilisateur.solde() , 'prix' : prix.str_cout })
|
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err_solde % { 'solde' : utilisateur.solde() , 'prix' : prix.str_cout })
|
||||||
|
|
||||||
# Tout est OK, on imprime
|
# Tout est OK, on imprime
|
||||||
|
@ -180,7 +155,7 @@ else:
|
||||||
# imprimante.pjl_command('SET OUTBIN=UPPER') #a tester
|
# imprimante.pjl_command('SET OUTBIN=UPPER') #a tester
|
||||||
imprimante.write_postscript(nom_fic2, sys.argv[1], utilisateur.Nom())
|
imprimante.write_postscript(nom_fic2, sys.argv[1], utilisateur.Nom())
|
||||||
os.system("cp %s /tmp/last_printed.ps" % nom_fic2)
|
os.system("cp %s /tmp/last_printed.ps" % nom_fic2)
|
||||||
os.system("chmod 666 /tmp/last_printed.ps")
|
os.system("chmod 644 /tmp/last_printed.ps")
|
||||||
|
|
||||||
os.system("rm %s" % nom_fic2)
|
os.system("rm %s" % nom_fic2)
|
||||||
message=imprimante.pjl_read()
|
message=imprimante.pjl_read()
|
||||||
|
@ -197,13 +172,19 @@ else:
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
imprimante.cx_close()
|
imprimante.cx_close()
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
# Si messsage contient DISPLAY="Annulation de la tache" :
|
||||||
|
# On ne debite pas l'utilisateur et on envoie le mail adequat.
|
||||||
|
if "Annulation" in message:
|
||||||
|
# On loggue l'erreur
|
||||||
|
sys.stderr.write(("ERROR: Erreur : utilisateur : %s, Tache annulée" % utilisateur.Nom()).encode('latin-1'))
|
||||||
|
# et on envoi le mail d'erreur
|
||||||
|
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : "Annulation de la tache"})
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
# On débite l'adhérent si l'impression a eu lieu
|
# On débite l'adhérent si l'impression a eu lieu
|
||||||
# TODO: si messsage contient DISPLAY="Annulation de la tache"
|
|
||||||
# ne pas debiter l'utilisateur et envoyer le mail adequat
|
|
||||||
utilisateur.solde(-prix.c_total_euros)
|
utilisateur.solde(-prix.c_total_euros)
|
||||||
utilisateur.save()
|
utilisateur.save()
|
||||||
|
|
||||||
|
|
||||||
#Génération du code et écriture du code
|
#Génération du code et écriture du code
|
||||||
i=0
|
i=0
|
||||||
code=0
|
code=0
|
||||||
|
@ -227,14 +208,21 @@ else:
|
||||||
codefichier.write("Utilisateur %s\n"%(utilisateur.Nom()))
|
codefichier.write("Utilisateur %s\n"%(utilisateur.Nom()))
|
||||||
codefichier.close()
|
codefichier.close()
|
||||||
else :
|
else :
|
||||||
#Grosse erreur faudra faire qqch
|
# Grosse erreur : on logue, on previent et on stoppe.
|
||||||
sys.stderr.write("ERROR: Erreur : il n'y a pas de code disponible" )
|
sys.stderr.write("ERROR: Il n'y a pas de code disponible" )
|
||||||
sys.exit(0)
|
try:
|
||||||
|
prix.send_mail("Impression <%s>" % impression.From_imprimante , u"ERREUR " + sujet, "Une erreur s'est produite lors de cette impression :\nIl n'y a plus de code disponible.\n")
|
||||||
|
sys.stderr.write("INFO: Un rapport de bug a ete automatiquement envoye.\n")
|
||||||
|
except :
|
||||||
|
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
|
||||||
|
sys.stderr.write("ERROR: Plus de codes disponibles.\n")
|
||||||
|
sys.stderr.write("ERROR: Penser a ouvrir a l'adherent debite...\n")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
#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' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_ok % {'solde' : utilisateur.solde(), 'blocage' : str(impression.decouvert), 'code' : code })
|
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_ok % {'solde' : utilisateur.solde(), 'code' : code })
|
||||||
except:
|
except:
|
||||||
sys.stderr.write("ERROR: Erreur , impression annulée\n" )
|
sys.stderr.write("ERROR: Erreur : impression annulée\n" )
|
||||||
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : u"Le fichier n'a pu être imprimé.\n Veuillez réessayer plus tard.\n"} )
|
prix.send_mail("%(nom)s <%(adrmail)s>" % {'nom' : utilisateur.Nom(), 'adrmail' : adrmail}, sujet, mail_err % {'erreur' : u"Le fichier n'a pu être imprimé.\n Veuillez réessayer plus tard.\n"} )
|
||||||
# Report de bug
|
# Report de bug
|
||||||
import traceback
|
import traceback
|
||||||
|
@ -252,6 +240,4 @@ else:
|
||||||
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
|
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
|
||||||
sys.stderr.write("ERROR: %s \n" % traceback)
|
sys.stderr.write("ERROR: %s \n" % traceback)
|
||||||
|
|
||||||
# On loggue ce que ne loggue pas cups quelquepart ?
|
|
||||||
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue