From a2bc55607a71ba856792bb8ca823328056824ba1 Mon Sep 17 00:00:00 2001
From: rozel
Date: Wed, 29 Jun 2005 10:48:22 +0200
Subject: [PATCH] Gestion de la couleur et du format transparent.
faces est un entier.
Changement du format de sortie qui devrait tre plus comprhensible
au niveau de la signification des paramtres.
darcs-hash:20050629084822-061a7-66f6562530f61dcbe37dbcab8694c403f5b90b4a.gz
---
impression/couts.py | 50 ++++++++++++++++++++++++++++-----------------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git a/impression/couts.py b/impression/couts.py
index 67c87aeb..4e66583c 100755
--- a/impression/couts.py
+++ b/impression/couts.py
@@ -3,8 +3,8 @@
# Utilisé par /var/www/impression/analyse.py
# /usr/lib/cups/backend/devis et /usr/lib/cups/backend/laserjet
-# Écrit par Benoit
-# modifié par Brice DUBOST
+# Écrit initial par Benoit
+# modifié par Brice DUBOST et Benoit
import locale
locale.setlocale(locale.LC_ALL, 'fr_FR')
@@ -30,17 +30,21 @@ class cout:
format="NON_VALIDE"
erreur=""
recto_v="None"
+ media=""
- def __init__(self,fichierps, mode_couleur, recto_v="None", format="A4", nb_copie=1, media="" ):
+ def __init__(self, fichierps, media="", mode_couleur="Couleur", recto_v="None", format="A4", nb_copie=1):
""" * fichierps est le fichier PostScript (ou pdf) à analyser
+ * media vaut transparent le cas écheant (dans ce cas format=A4)
* mode_couleur = Couleur pour traiter en couleur
* recto_v = Recto si l'on ne desire pas un recto-verso
* format vaut A3 ou A4 selon le bac choisi
* nb_copie est le nombre de copies désirées
- * media vaut transparent le cas écheant (dans ce cas format=A4)
Le PostScript a toujours priorité sur ces parametres
"""
+ # Pour la couleur, je n'ai pas trouve de methode valables tout le temps
+ # Le plus simple reste donc de voir s'il y a 0% de couleur dans le ps.
+
self.nb_copie=nb_copie
# on compte le nb de copies et on enlève les balises pour ne pas recalculer
nb_copie_ps=0
@@ -100,6 +104,7 @@ class cout:
cout_noir = impression.c_noir
if (media == "transparent"):
c_format = impression.c_trans
+ self.media="transparent"
else:
c_format = impression.c_a4
@@ -138,13 +143,16 @@ class cout:
os.system("rm -f '%s'" % (file))
self.total_noir = remplissage[3]
self.total_couleur = sum(remplissage[0:3])
- self.faces = remplissage[4]
+ self.faces = int(remplissage[4])
if (recto_v == "Recto"):
self.pages = self.faces # nb de pages par copies
else:
self.pages = int(self.faces/2.+0.5)
- self.c_total = c_format*self.pages+(impression.c_tambour_coul+impression.c_tambour_noir)*self.faces+cout_noir*self.total_noir+cout_coul*self.total_couleur
- else:
+ if self.total_couleur > 0:
+ self.c_total = c_format*self.pages+(impression.c_tambour_coul+impression.c_tambour_noir)*self.faces+cout_noir*self.total_noir+cout_coul*self.total_couleur
+ else: # Pas de couleur
+ self.c_total = c_format*self.pages+impression.c_tambour_noir*self.faces+cout_noir*self.total_noir
+ else: # Utile pour la page web
remplissage = [0, 0] # Noir, nombre de pages
for file in string.split(commands.getoutput("ls '%s'*.png" % (fichier)),"\n"):
resultats = commands.getoutput("/usr/scripts/impression/percentblack '%s'" % (file))
@@ -153,7 +161,7 @@ class cout:
remplissage[1] += float(l_resultats[1])
os.system("rm -f '%s'" % (file))
self.total_noir = remplissage[0]
- self.faces = remplissage[1]
+ self.faces = int(remplissage[1])
if (recto_v == "Recto"):
self.pages = self.faces # nb de pages par copies
else:
@@ -163,7 +171,7 @@ class cout:
self.c_total_euros=float(self.c_total)/100
os.system("rm -f '%s'*.png" %(fichier))
else:
- self.erreur=u"ERREUR : Fichier Postscript invalide. aucun png a été créé\n"
+ self.erreur=u"ERREUR : Fichier Postscript invalide. Aucun png n'a été créé\n"
@@ -177,26 +185,30 @@ class cout:
if self.format=="NON_VALIDE":
format=u"Le format de papier que vous avez demandé n'est pas valide"
else:
- format=self.format
+ if self.media=="transparent":
+ format="transparent A4"
+ else:
+ format=self.format
try:
return template % { 'prix' : str_cout }
except:
- return template % { 'noir' : "%2.2f" % (self.total_noir/self.faces), 'couleur' : "%2.2f" % (self.total_couleur/self.faces), 'faces' :int(self.faces), 'pages' : int(self.pages), 'copies' : self.nb_copie, 'format' : format, 'prix' : str_cout}
+ return template % { 'noir' : self.total_noir, 'couleur' : self.total_couleur, 'faces' : self.faces, 'pages' : self.pages, 'copies' : self.nb_copie, 'format' : format, 'prix' : str_cout}
def html_cout(self):
"""Renvoie le cout formaté en html"""
# Format du PS (parfois different de celui choisi)
# Utile pour deboguage, sera supprime apres
- template = """Résultats :
+ template = """Résultats :
- Format de l'impression : %(format)s
- - Noir (par copie) : %(noir)s%%
- - Couleur (par copie) : %(couleur)s%%
- - Nombre de faces (par copie) : %(faces)s
- - Nombre de pages (par copie) : %(pages)s
- - Nombre de copies : %(copies)s
-
Prix total : %(prix)s
-
\n
+
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
\n"""
if not self.erreur: