[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:
parent
284c189c8e
commit
5eba5336fb
2 changed files with 119 additions and 117 deletions
|
@ -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 adhrent.
|
||||||
"""
|
"""
|
||||||
# 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'accs 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)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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"",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue