[lib/impression] hack rapide pour tester la validite de ces fichiers

Ignore-this: 9b996c273bb91c0dfc39f016acde9fcc

darcs-hash:20090515113955-bd074-1919250a70a9ff14366d8ae9d9723dfbfd865502.gz
This commit is contained in:
Antoine Durand-Gasselin 2009-05-15 13:39:55 +02:00
parent 284c189c8e
commit 5eba5336fb
2 changed files with 119 additions and 117 deletions

View file

@ -1,32 +1,32 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# ############################################################# # #############################################################
# .. # ..
# .... ............ ........ # .... ............ ........
# . ....... . .... .. # . ....... . .... ..
# . ... .. .. .. .. ..... . .. # . ... .. .. .. .. ..... . ..
# .. .. ....@@@. .. . ........ . # .. .. ....@@@. .. . ........ .
# .. . .. ..@.@@..@@. .@@@@@@@ @@@@@@. .... # .. . .. ..@.@@..@@. .@@@@@@@ @@@@@@. ....
# .@@@@. .@@@@. .@@@@..@@.@@..@@@..@@@..@@@@.... .... # .@@@@. .@@@@. .@@@@..@@.@@..@@@..@@@..@@@@.... ....
# @@@@... .@@@.. @@ @@ .@..@@..@@...@@@. .@@@@@. .. # @@@@... .@@@.. @@ @@ .@..@@..@@...@@@. .@@@@@. ..
# .@@@.. . @@@. @@.@@..@@.@@..@@@ @@ .@@@@@@.. ..... # .@@@.. . @@@. @@.@@..@@.@@..@@@ @@ .@@@@@@.. .....
# ...@@@.... @@@ .@@.......... ........ ..... .. # ...@@@.... @@@ .@@.......... ........ ..... ..
# . ..@@@@.. . .@@@@. .. ....... . ............. # . ..@@@@.. . .@@@@. .. ....... . .............
# . .. .... .. .. . ... .... # . .. .... .. .. . ... ....
# . . .... ............. .. ... # . . .... ............. .. ...
# .. .. ... ........ ... ... # .. .. ... ........ ... ...
# ................................ # ................................
# #
# ############################################################# # #############################################################
# __init__.py # __init__.py
# #
# Classe impression # Classe impression
# #
# Copyright (c) 2006 by www.crans.org # Copyright (c) 2006 by www.crans.org
# ############################################################# # #############################################################
""" """
Classe pour gŽrer l'envoie de pdf ˆ l'imprimante. Classe pour gérer l'envoie de pdf à l'imprimante.
Calcule le cožt des options d'impression. Calcule le coût des options d'impression.
""" """
__version__ = '1' __version__ = '1'
@ -35,20 +35,20 @@ sys.path.append('/usr/scripts/gestion')
import config import config
import cout import cout
from crans.utils import QuoteForPOSIX as escapeForShell from crans.utils import QuoteForPOSIX as escapeForShell
import crans.utils.logs import crans.utils.logs
log = crans.utils.logs.getFileLogger('impression') log = crans.utils.logs.getFileLogger('impression')
# Début : Ajout log pour réestimer les coûts # Début : Ajout log pour réestimer les coûts
import time import time
import hptools import hptools
comm = hptools.snmp(host="laserjet.adm.crans.org",version="1",community="public") comm = hptools.snmp(host="imprimante.adm.crans.org",version="1",community="public")
# Fin # Fin
# ######################################################## # # ######################################################## #
# CONSTANTES # # CONSTANTES #
# ######################################################## # # ######################################################## #
#
# #
# Début : Ajout log pour réestimer les coûts #
# Début : Ajout log pour réestimer les coûts
FICHIER_LOG="/var/log/log_couts/impressions" FICHIER_LOG="/var/log/log_couts/impressions"
SNMP_CAR_B_PC="enterprises.11.2.3.9.4.2.1.4.1.10.1.1.18.1.0" SNMP_CAR_B_PC="enterprises.11.2.3.9.4.2.1.4.1.10.1.1.18.1.0"
@ -67,10 +67,10 @@ SNMP_TAM_B_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.5.0"
SNMP_TAM_C_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.6.0" SNMP_TAM_C_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.6.0"
SNMP_TAM_M_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.7.0" SNMP_TAM_M_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.7.0"
SNMP_TAM_Y_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.8.0" SNMP_TAM_Y_PR="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.8.0"
# Fin # Fin
DECOUVERT_AUTHORISE = config.impression.decouvert DECOUVERT_AUTHORISE = config.impression.decouvert
PAS_D_AGRAPHES = "pasdagraphes" PAS_D_AGRAPHES = "pasdagraphes"
AGRAPHE_DIAGONALE = "agraphediagonale" AGRAPHE_DIAGONALE = "agraphediagonale"
UNE_AGRAPHE = "uneagraphe" UNE_AGRAPHE = "uneagraphe"
DEUX_AGRAPHE = "Deuxagraphes" DEUX_AGRAPHE = "Deuxagraphes"
@ -83,7 +83,7 @@ NB_AGRAPHES = {
UNE_AGRAPHE: 1, UNE_AGRAPHE: 1,
DEUX_AGRAPHE: 2, DEUX_AGRAPHE: 2,
TROIS_AGRAPHE: 3, TROIS_AGRAPHE: 3,
STITCHING: 6, STITCHING: 6,
} }
PAPIER_A4 = "A4" PAPIER_A4 = "A4"
@ -115,14 +115,14 @@ LABELS = {
DEUX_AGRAPHE: '2 agrafes', DEUX_AGRAPHE: '2 agrafes',
TROIS_AGRAPHE: '3 agrafes', TROIS_AGRAPHE: '3 agrafes',
STITCHING: 'stitching (6 agrafes)', STITCHING: 'stitching (6 agrafes)',
PAPIER_A4: "A4", PAPIER_A4: "A4",
PAPIER_A4_TRANSPARENT: "A4 transparent", PAPIER_A4_TRANSPARENT: "A4 transparent",
PAPIER_A3: "A3", PAPIER_A3: "A3",
IMPRESSION_COULEUR: "impression couleurs", IMPRESSION_COULEUR: "impression couleurs",
IMPRESSION_NB: "impression noir et blanc", IMPRESSION_NB: "impression noir et blanc",
IMPRESSION_RECTO: "impression recto", IMPRESSION_RECTO: "impression recto",
IMPRESSION_RECTO_VERSO: "impression recto-verso", IMPRESSION_RECTO_VERSO: "impression recto-verso",
IMPRESSION_RECTO_VERSO_SHORT: "impression recto-verso", IMPRESSION_RECTO_VERSO_SHORT: "impression recto-verso",
@ -135,14 +135,14 @@ LPR_OPTIONS = {
DEUX_AGRAPHE: ' -o StapleLocation=2parallel', DEUX_AGRAPHE: ' -o StapleLocation=2parallel',
TROIS_AGRAPHE: ' -o StapleLocation=3parallel', TROIS_AGRAPHE: ' -o StapleLocation=3parallel',
STITCHING: ' -o StapleLocation=Stitching', STITCHING: ' -o StapleLocation=Stitching',
PAPIER_A4: ' -o InputSlot=Tray4 -o pdf-paper=571x817 -o PageSize=A4', PAPIER_A4: ' -o InputSlot=Tray4 -o pdf-paper=571x817 -o PageSize=A4',
PAPIER_A4_TRANSPARENT: ' -o PageSize=A4 -o InputSlot=Tray1 -o Media=Transparency', PAPIER_A4_TRANSPARENT: ' -o PageSize=A4 -o InputSlot=Tray1 -o Media=Transparency',
PAPIER_A3: ' -o pdf-expand -o pdf-paper=825x1166 -o InputSlot=Tray3 -o HPPaperPolicy=A3 -o PageSize=A3', PAPIER_A3: ' -o pdf-expand -o pdf-paper=825x1166 -o InputSlot=Tray3 -o HPPaperPolicy=A3 -o PageSize=A3',
IMPRESSION_COULEUR: ' -o HPColorasGray=False', IMPRESSION_COULEUR: ' -o HPColorasGray=False',
IMPRESSION_NB: ' -o HPColorasGray=True', IMPRESSION_NB: ' -o HPColorasGray=True',
IMPRESSION_RECTO: ' -o sides=one-sided', IMPRESSION_RECTO: ' -o sides=one-sided',
IMPRESSION_RECTO_VERSO: ' -o sides=two-sided-long-edge', IMPRESSION_RECTO_VERSO: ' -o sides=two-sided-long-edge',
IMPRESSION_RECTO_VERSO_SHORT: ' -o sides=two-sided-short-edge', IMPRESSION_RECTO_VERSO_SHORT: ' -o sides=two-sided-short-edge',
@ -152,12 +152,12 @@ LPR_OPTIONS = {
# ######################################################## # # ######################################################## #
# ERREURS # # ERREURS #
# ######################################################## # # ######################################################## #
# #
class FichierInvalide(Exception): class FichierInvalide(Exception):
""" """
Exception renvoyée lorsqu'un fichier ne passe pas. Exception renvoyée lorsqu'un fichier ne passe pas.
utilisée avec deux arguments : une chaîndéÃécrivant l'erreur et une chÃine avec le nom du fichier utilisée avec deux arguments : une chaîndéÃécrivant l'erreur et une chÃine avec le nom du fichier
""" """
def __str__(self): def __str__(self):
""" """
@ -166,7 +166,7 @@ class FichierInvalide(Exception):
return self.args[0] return self.args[0]
def file(self): def file(self):
""" """
Nom du fichier qui pose problème Nom du fichier qui pose problème
""" """
try: try:
return self.args[1] return self.args[1]
@ -175,7 +175,7 @@ class FichierInvalide(Exception):
class SoldeInsuffisant(Exception): class SoldeInsuffisant(Exception):
""" """
Solde insuffisant pour l'impression demandée Solde insuffisant pour l'impression demandée
""" """
pass pass
class PrintError(Exception): class PrintError(Exception):
@ -185,18 +185,18 @@ class PrintError(Exception):
pass pass
class SettingsError(Exception): class SettingsError(Exception):
""" """
Erreur de paramètres. Erreur de paramètres.
""" """
pass pass
# ######################################################## # # ######################################################## #
# CLASSE IMPRESSION # # CLASSE IMPRESSION #
# ######################################################## # # ######################################################## #
# #
# #
class impression: class impression:
"""impression """impression
Un objet impression correspond ˆ un fichier pdf et un adhŽrent. Un objet impression correspond ˆ un fichier pdf et un adhŽrent.
""" """
# fichier (chemin) # fichier (chemin)
_fichier = "" _fichier = ""
@ -218,14 +218,16 @@ class impression:
# (prix pour papier A4) # (prix pour papier A4)
_base_prix_nb = 0.0 _base_prix_nb = 0.0
_base_prix_couleurs = 0.0 _base_prix_couleurs = 0.0
def __init__(self, path_to_pdf, adh = None): def __init__(self, path_to_pdf, adh = None):
"""impression(path_to_pdf [, adh]) """impression(path_to_pdf [, adh])
CrŽe un nouvel objet impression ˆ partir du fichier pdf pointŽ par path_to_pdf. Crée un nouvel objet impression à partir du fichier pdf pointé
Si adh ext donnŽ, il peut <EFBFBD>tre soit une instance d'un objet adhŽrent de crans_ldap soit le login de l'adhŽrent. par path_to_pdf. Si adh ext donné, il peut être soit une
L<EFBFBD>ve l'exception FichierInvalide si le fichier n'existe pas ou si ce n'est pas un pdf. instance d'un objet adhérent de crans_ldap soit le login de
l'adhérent. Lève l'exception FichierInvalide si le fichier
n'existe pas ou si ce n'est pas un pdf.
""" """
self._fichier = path_to_pdf self._fichier = path_to_pdf
# on verifie que le fichier existe # on verifie que le fichier existe
@ -244,12 +246,12 @@ class impression:
raise Exception, "Erreur dans le calcul du cout : %s " % str(e) raise Exception, "Erreur dans le calcul du cout : %s " % str(e)
self._calcule_prix() self._calcule_prix()
def changeSettings(self, agraphes = None, papier = None, couleurs = None, recto_verso=None, copies=None): def changeSettings(self, agraphes = None, papier = None, couleurs = None, recto_verso=None, copies=None):
"""changeSettings([keyword=value]) """changeSettings([keyword=value])
Change les parametres de l'impression, recalcule et renvoie le nouveau prix. Change les parametres de l'impression, recalcule et renvoie le nouveau prix.
L<EFBFBD>ve une exceotion SettingError si les param<EFBFBD>tres son invalides. Lève une exceotion SettingError si les paramètres son invalides.
""" """
#recalcule et renvoie le prix #recalcule et renvoie le prix
if (couleurs): if (couleurs):
@ -290,61 +292,61 @@ class impression:
def printSettings(self): def printSettings(self):
"""printSettings() """printSettings()
Affiche les param<EFBFBD>tres courrants sur la sortie standard Affiche les paramètres courrants sur la sortie standard
""" """
print "Type impression: " + LABELS[self._settings['couleurs']] print "Type impression: " + LABELS[self._settings['couleurs']]
print "Agraphes: " + LABELS[self._settings['agraphes']] print "Agraphes: " + LABELS[self._settings['agraphes']]
print "Papier: " + LABELS[self._settings['papier']] print "Papier: " + LABELS[self._settings['papier']]
print "Disposition: " + LABELS[self._settings['recto_verso']] print "Disposition: " + LABELS[self._settings['recto_verso']]
print "Copies: " + str(self._settings['copies']) print "Copies: " + str(self._settings['copies'])
def prix(self): def prix(self):
"""prix() """prix()
Renvoie le prix courrant de l'impression Renvoie le prix courrant de l'impression
""" """
return self._prix return self._prix
def fileName(self): def fileName(self):
"""fileName() """fileName()
renvoie le nom du fichier pdf (exemple : monPdf.pdf) renvoie le nom du fichier pdf (exemple : monPdf.pdf)
""" """
return os.path.basename(self._fichier) return os.path.basename(self._fichier)
def filePath(self): def filePath(self):
"""filePath() """filePath()
renvoie le chemin d'acc<EFBFBD>s au fichier pdf. renvoie le chemin d'accs au fichier pdf.
""" """
return self._fichier return self._fichier
def devisDetaille(self): def devisDetaille(self):
"""devisDetaille() """devisDetaille()
renvoie un disctionnaire contenant le devis (intitulŽ, PU., quantitŽ) pour tous les ŽlŽments de l'impression renvoie un disctionnaire contenant le devis (intitulé, PU., quantité) pour tous les éléments de l'impression
(papier, encre, agrafes...) (papier, encre, agrafes...)
""" """
return self._details_devis return self._details_devis
def pages(self): def pages(self):
"""pages() """pages()
renvoie le nombre de pages du document (page au sens nombre de faces ˆ imprimer et non le nombre de feuilles) renvoie le nombre de pages du document (page au sens nombre de faces à imprimer et non le nombre de feuilles)
""" """
return self._nb_pages return self._nb_pages
def imprime(self): def imprime(self):
"""imprime() """imprime()
imprime le document pdf. dŽbite l'adhŽrent si adhŽrent il y a. imprime le document pdf. débite l'adhérent si adhérent il y a.
(si il a ŽtŽ indiquŽ ˆ l'initialisation de l'objet) (si il a été indiqué à l'initialisation de l'objet)
""" """
# debite l'adhŽrent si adherent il y a # debite l'adhérent si adherent il y a
if (self._adh != None): if (self._adh != None):
adh = self._get_adh(self._adh) adh = self._get_adh(self._adh)
if (self._prix > (adh.solde() - DECOUVERT_AUTHORISE)): if (self._prix > (adh.solde() - DECOUVERT_AUTHORISE)):
@ -354,10 +356,10 @@ class impression:
del adh del adh
# imprime le document # imprime le document
self._exec_imprime() self._exec_imprime()
def printDevis(self): def printDevis(self):
"""printDevis() """printDevis()
Affiche le devis sur la sortie standard. Affiche le devis sur la sortie standard.
""" """
print "titre \t\t | p.u. \t quandtite \t total" print "titre \t\t | p.u. \t quandtite \t total"
@ -373,32 +375,32 @@ class impression:
base_prix_encre = self._base_prix_couleurs base_prix_encre = self._base_prix_couleurs
else: else:
base_prix_encre = self._base_prix_nb base_prix_encre = self._base_prix_nb
if (self._settings['papier'] == PAPIER_A3): if (self._settings['papier'] == PAPIER_A3):
pu_encre = base_prix_encre * 2 pu_encre = base_prix_encre * 2
else: else:
pu_encre = base_prix_encre pu_encre = base_prix_encre
facture.append(( facture.append((
LABELS[self._settings['couleurs']] + ' sur papier ' + LABELS[self._settings['papier']], LABELS[self._settings['couleurs']] + ' sur papier ' + LABELS[self._settings['papier']],
pu_encre, self._settings['copies'])) pu_encre, self._settings['copies']))
prix+= self._settings['copies'] * pu_encre prix+= self._settings['copies'] * pu_encre
#calcul du prix des feuilles #calcul du prix des feuilles
if (self._settings['recto_verso'] == IMPRESSION_RECTO_VERSO) or (self._settings['recto_verso'] == IMPRESSION_RECTO_VERSO_SHORT): if (self._settings['recto_verso'] == IMPRESSION_RECTO_VERSO) or (self._settings['recto_verso'] == IMPRESSION_RECTO_VERSO_SHORT):
nbfeuilles = int(self._nb_pages/2.+0.5) * self._settings['copies'] nbfeuilles = int(self._nb_pages/2.+0.5) * self._settings['copies']
else: else:
nbfeuilles = self._nb_pages * self._settings['copies'] nbfeuilles = self._nb_pages * self._settings['copies']
facture.append(( facture.append((
'feuilles ' + LABELS[self._settings['papier']], 'feuilles ' + LABELS[self._settings['papier']],
PU_FEUILLE[self._settings['papier']], PU_FEUILLE[self._settings['papier']],
nbfeuilles)) nbfeuilles))
prix+= PU_FEUILLE[self._settings['papier']] * nbfeuilles prix+= PU_FEUILLE[self._settings['papier']] * nbfeuilles
# calcul prix des Agraphes # calcul prix des Agraphes
facture.append(( facture.append((
'agrafes', 'agrafes',
PU_AGRAPHE, PU_AGRAPHE,
NB_AGRAPHES[self._settings['agraphes']] * self._settings['copies'])) NB_AGRAPHES[self._settings['agraphes']] * self._settings['copies']))
prix+= NB_AGRAPHES[self._settings['agraphes']] * self._settings['copies'] * PU_AGRAPHE prix+= NB_AGRAPHES[self._settings['agraphes']] * self._settings['copies'] * PU_AGRAPHE
@ -424,7 +426,7 @@ class impression:
## ##
def _exec_imprime(self): def _exec_imprime(self):
""" Envoie l'impression a l'imprimante avec les parametres actuels """ """ Envoie l'impression a l'imprimante avec les parametres actuels """
if (self._adh != None): if (self._adh != None):
log.info('Impression [%s] : %s' % (self._adh, self._fichier)) log.info('Impression [%s] : %s' % (self._adh, self._fichier))
else: else:
@ -434,42 +436,42 @@ class impression:
# Creation de la liste d'options # Creation de la liste d'options
# pour le nombre de copies et specifie non assemblee # pour le nombre de copies et specifie non assemblee
#options += '-# %d -o Collate=True' % self.nb_copies #options += '-# %d -o Collate=True' % self.nb_copies
# Pour specifier l'imprimante # Pour specifier l'imprimante
options += ' -P laserjet' options += ' -P laserjet'
#Indique la presence d'un bac de sortie avec agrafeuse #Indique la presence d'un bac de sortie avec agrafeuse
options += " -o Option20=MBMStaplerStacker -o OutputBin=StackerStapled" options += " -o Option20=MBMStaplerStacker -o OutputBin=StackerStapled"
# Pour specifier la version du language postscript utilise par pdftops # Pour specifier la version du language postscript utilise par pdftops
options += ' -o pdf-level3' options += ' -o pdf-level3'
# Pour donner le titre de l'impression # Pour donner le titre de l'impression
options += " -T '%s'" % self._fichier options += " -T '%s'" % self._fichier
# Pour donner le login de l'adherent # Pour donner le login de l'adherent
if (self._adh != None): if (self._adh != None):
options += ' -U %s' % self._adh options += ' -U %s' % self._adh
# Pour demander une page de garde # Pour demander une page de garde
#options += ' -o job-sheets=crans' #page de garde de type standard #options += ' -o job-sheets=crans' #page de garde de type standard
#options += " -o job-billing=%.2f" % self.cout #options += " -o job-billing=%.2f" % self.cout
#options += ' -o job-sheets=none' #options += ' -o job-sheets=none'
# option agrafes # option agrafes
options += LPR_OPTIONS[self._settings['agraphes']] options += LPR_OPTIONS[self._settings['agraphes']]
# option papier # option papier
options += LPR_OPTIONS[self._settings['papier']] options += LPR_OPTIONS[self._settings['papier']]
# option disposition # option disposition
options += LPR_OPTIONS[self._settings['recto_verso']] options += LPR_OPTIONS[self._settings['recto_verso']]
# options couleurs # options couleurs
options += LPR_OPTIONS[self._settings['couleurs']] options += LPR_OPTIONS[self._settings['couleurs']]
# Début : Ajout log pour réestimer les coûts # Début : Ajout log pour réestimer les coûts
# Commandes snmp recuperation des etats # Commandes snmp recuperation des etats
val_car_b_pc=int(comm.get(SNMP_CAR_B_PC)) val_car_b_pc=int(comm.get(SNMP_CAR_B_PC))
val_car_c_pc=int(comm.get(SNMP_CAR_C_PC)) val_car_c_pc=int(comm.get(SNMP_CAR_C_PC))
@ -487,9 +489,9 @@ class impression:
val_tam_c_pr=int(comm.get(SNMP_TAM_C_PR)) val_tam_c_pr=int(comm.get(SNMP_TAM_C_PR))
val_tam_m_pr=int(comm.get(SNMP_TAM_M_PR)) val_tam_m_pr=int(comm.get(SNMP_TAM_M_PR))
val_tam_y_pr=int(comm.get(SNMP_TAM_Y_PR)) val_tam_y_pr=int(comm.get(SNMP_TAM_Y_PR))
fichier_log_imp=open(FICHIER_LOG,"a") fichier_log_imp=open(FICHIER_LOG,"a")
fichier_log_imp.write("%d %3d %2s : %3d %3d %3d %3d : %5d %5d %5d %5d : %3d %3d %3d %3d : %5d %5d %5d %5d : %s\n" % fichier_log_imp.write("%d %3d %2s : %3d %3d %3d %3d : %5d %5d %5d %5d : %3d %3d %3d %3d : %5d %5d %5d %5d : %s\n" %
(time.time(),self._settings['copies'],self._settings['papier'], (time.time(),self._settings['copies'],self._settings['papier'],
val_car_b_pc, val_car_b_pc,
val_car_c_pc, val_car_c_pc,
@ -501,16 +503,16 @@ class impression:
val_car_y_pr, val_car_y_pr,
val_tam_b_pc, val_tam_b_pc,
val_tam_c_pc, val_tam_c_pc,
val_tam_m_pc, Val_tam_m_pc,
val_tam_y_pc, val_tam_y_pc,
val_tam_b_pr, val_tam_b_pr,
val_tam_c_pr, val_tam_c_pr,
val_tam_m_pr, val_tam_m_pr,
val_tam_y_pr, val_tam_y_pr,
self._fichier) ) self._fichier) )
fichier_log_imp.close() fichier_log_imp.close()
# Fin # Fin
liste_nom_fichier_pdf=(' '+escapeForShell( self._fichier ) )*self._settings['copies'] liste_nom_fichier_pdf=(' '+escapeForShell( self._fichier ) )*self._settings['copies']
import commands import commands
#(status,rep) = commands.getstatusoutput("lpr %s %s" % (options, self.nom_fichier_pdf)) #(status,rep) = commands.getstatusoutput("lpr %s %s" % (options, self.nom_fichier_pdf))
@ -519,5 +521,5 @@ class impression:
log.error("erreur impression") log.error("erreur impression")
log.error("lpr status:%d | rep: %s" % (status, rep)) log.error("lpr status:%d | rep: %s" % (status, rep))
raise PrintError, "lpr %s %s \n status:%d rep: %s" % (options, liste_nom_fichier_pdf, status, rep) raise PrintError, "lpr %s %s \n status:%d rep: %s" % (options, liste_nom_fichier_pdf, status, rep)

View file

@ -2,10 +2,10 @@
# -*- coding: iso-8859-15 -*- # -*- coding: iso-8859-15 -*-
""" """
etat_imprimante.py etat_imprimante.py
Récupère, filtre et formate l'état actuel de l'imprimante
Copyright (c) 2006 by www.crans.org Récupère, filtre et formate l'état actuel de l'imprimante
Copyright (c) 2006 by www.crans.org
""" """
@ -54,9 +54,9 @@ def etat_laserjet():
u"JAUNE": u"", u"JAUNE": u"",
u"NOIR": u"", u"NOIR": u"",
u'Pr aide appuyer \x1f': u"", u'Pr aide appuyer \x1f': u"",
u'13.12.12 BOURRAGE DS':u"Bourrage papier", u'13.12.12 BOURRAGE DS':u"Bourrage papier",
u'ACCESSOIRE GAUCHE':u"", u'ACCESSOIRE GAUCHE':u"",
u'13.03.00 BOURRAGE':u"Bourrage papier", u'13.03.00 BOURRAGE':u"Bourrage papier",
u'DS TRAPPE SUP DROITE':u"", u'DS TRAPPE SUP DROITE':u"",
u'COMM TAMB. NOIR':u"", u'COMM TAMB. NOIR':u"",
u'PAGES REST.': u"", u'PAGES REST.': u"",