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 :
-
Prix total : %(prix)s -

\n

+

  • Pour une copie : +
  • +
  • Nombre de copies : %(copies)s
  • +
    + Prix total : %(prix)s

    \n""" if not self.erreur: