diff --git a/impression/couts.py b/impression/couts.py index 56bc01dd..a3f5a003 100755 --- a/impression/couts.py +++ b/impression/couts.py @@ -10,8 +10,7 @@ import locale locale.setlocale(locale.LC_ALL, 'fr_FR') -import commands, os, string, sys -import tempfile # non utilisé en ce moment +import commands, os, string, sys, tempfile sys.path.append('/usr/scripts/gestion') from config import impression @@ -19,10 +18,8 @@ from config import impression class cout: """Classe pour le calcul du cout d'une impression et de sa mise en page""" - #en centimes - c_total=0 - #en euros - c_total_euros=0 + c_total=0 # en centimes + c_total_euros=0 # en euros total_noir=0 total_couleur=0 faces=1 @@ -42,7 +39,7 @@ class cout: * recto_v = Recto si l'on ne desire pas un recto-verso * taille vaut A3 ou A4 selon le bac choisi * nb_copie est le nombre de copies désirées - Le PostScript a toujours priorité sur ces parametres + Le PostScript a toujours priorité sur ces paramètres """ # Vérification du format de fichier. @@ -59,14 +56,9 @@ class cout: 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 - original=open(fichierps) - fichier='/tmp/couts_temp' - try: - fic = open(fichier,'w') - except: - os.remove(fichier) - fic = open(fichier,'w') -# fic = tempfile.NamedTemporaryFile() + original = open(fichierps) + fichier = tempfile.NamedTemporaryFile().name + fic = open(fichier,'w') ligne = original.readline() while ligne: if ligne.startswith('%%BeginFeature: *PageSize') or ligne.startswith('%%BeginFeature: *PageRegion'): @@ -95,6 +87,7 @@ class cout: self.taille=taille if not (taille=="A4" or taille=="A3"): self.erreur="Taille invalide" + os.remove(fichier) return if recto_v == "None" or recto_v == "Recto": @@ -124,18 +117,19 @@ class cout: c_taille = impression.c_a4 (status,rep) = commands.getstatusoutput("nice -n 10 gs -sDEVICE=%s -r100 -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -dMaxBitmap=50000000 -sOutputFile='%s' -q '%s'" % (device, fichier+"%d.png", fichier) ) + # On n'a plus besoin du fichier temp, donc on le supprime. + os.remove(fichier) + if (status != 0): self.erreur="ERREUR : Ghostscript : Fichier Postscript invalide.\n" - self.erreur="Le message d'erreur est le suivant :\n" self.erreur+= rep # On détaille l'erreur dans le mail et # il faut stopper l'impression. return - # On a plus besoin du fichier temp, donc on le supprime. - os.remove(fichier) - - if not os.system("ls '%s'*.png > /dev/null" % (fichier)): + if os.system("ls '%s'*.png > /dev/null" % (fichier)): + self.erreur=u"ERREUR : Fichier postscript invalide. Aucun png n'a été créé\n" + else: if (mode_couleur == "Couleur"): remplissage = [0, 0, 0, 0, 0] # C, M, J, N, nombre de pages for file in string.split(commands.getoutput("ls '%s'*.png" % (fichier)),"\n"): @@ -179,9 +173,6 @@ class cout: self.str_cout = "%s euros" % (self.c_total_euros) os.system("rm -f '%s'*.png" %(fichier)) - else: - self.erreur=u"ERREUR : Fichier Postscript invalide. Aucun png n'a été créé\n" - def remplis_template(self,template): @@ -189,10 +180,9 @@ class cout: if self.erreur=="Taille invalide": taille="Le format de papier que vous avez demandé n'est pas valide" + elif self.media=="transparent": + taille="transparent A4" else: - if self.media=="transparent": - taille="transparent A4" - else: - taille=self.taille + taille=self.taille return template % { 'noir' : self.total_noir, 'couleur' : self.total_couleur, 'faces' : self.faces, 'pages' : self.pages, 'copies' : self.nb_copie, 'taille' : taille, 'prix' : self.str_cout}