From 55664a28826a1f9ba1e05d1b2f8f6b1507b75664 Mon Sep 17 00:00:00 2001 From: rozel Date: Fri, 24 Jun 2005 11:51:40 +0200 Subject: [PATCH] Des broutilles. Commit juste pour viter les CVS status. darcs-hash:20050624095140-061a7-3a5f5a6a81b43ad923d97e6cdc6ce05327fb45f8.gz --- impression/couts.py | 16 +++++--------- impression/crans_backend.py | 43 ++++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 23 deletions(-) diff --git a/impression/couts.py b/impression/couts.py index ef721988..67c87aeb 100755 --- a/impression/couts.py +++ b/impression/couts.py @@ -1,22 +1,18 @@ #!/usr/bin/env python # -*- coding: iso-8859-15 -*- -# Utilisé par /usr/lib/cgi-bin/impression/analyse.py +# Utilisé par /var/www/impression/analyse.py # /usr/lib/cups/backend/devis et /usr/lib/cups/backend/laserjet # Écrit par Benoit -# modifie par Brice DUBOST +# modifié par Brice DUBOST import locale locale.setlocale(locale.LC_ALL, 'fr_FR') -import os, commands -import string -import re -import sys -import tempfile +import commands, os, string, sys +import tempfile # non utilisé en ce moment sys.path.append('/usr/scripts/gestion') - from config import impression @@ -107,8 +103,6 @@ class cout: else: c_format = impression.c_a4 - # Conversion en PostScript si le fichier est un pdf - # pour pouvoir le decouper en petits bouts. # Vérification du format de fichier. try: en_tete=open(fichier).read(4) @@ -123,6 +117,7 @@ class cout: (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) ) 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. @@ -203,7 +198,6 @@ class cout:
Prix total : %(prix)s

\n

\n""" - if not self.erreur: return self.remplis_template(template) diff --git a/impression/crans_backend.py b/impression/crans_backend.py index 69901b3d..879e9dc4 100755 --- a/impression/crans_backend.py +++ b/impression/crans_backend.py @@ -7,6 +7,7 @@ # Licence : GNU General Public Licence, version 2 import sys, tempfile +from ipp import IPPMessage import couts sys.path.append('/usr/scripts/gestion') from ldap_crans import crans_ldap @@ -14,31 +15,38 @@ from ldap_crans import crans_ldap def utilisateur(job, user, rw): """ Renvoie l'adherent qui imprime le job - * job est le n°du job (argument n°1 des paramètres passés au backend) + * job est le n° du job (argument n°1 des paramètres passés au backend) * user est l'utilisateur (argument n°2 des paramètres passés au backend) * rw vaut 1 si on veut modifier le compte LDAP de l'adhérent, 0 dans le cas contraire """ - # Attention, Samba fournit root pour sys.argv[2] - # en mode Authentifie + # Utilisation de Samba qui s'authentifie en root : on parse le spool + if user=="root": + sys.stderr.write("DEBUG: Utilisateur Root passé en paramètre\n") + sys.stderr.write("DEBUG: On récupère le vrai utilisateur dans le spool\n") + if len(job) < 5 : + fichier_ipp = "c%05i" % int(job) + else: + fichier_ipp = "c%s" % job + try: + message = IPPMessage(open('/var/spool/cups/%s' % fichier_ipp).read()) + except: + sys.stderr.write("ERROR: Erreur : Ne peut pas ouvrir le fichier /var/spool/cups/%s" % fichier_ipp) + sys.exit(0) # On conclue l'impression + user = message["job-originating-user-name"] # Récupération de l'adhérent base = crans_ldap() - if rw==0 : + if rw == 0 : res=base.search("login=%s"%user)['adherent'] else: res=base.search("login=%s"%user,'w')['adherent'] # Si on ne trouve rien : if len(res) != 1 : - if user=="root": - sys.stderr.write("ERROR: Utilisateur Root passé en paramètre\n") - sys.stderr.write("ERROR: Si passage par samba, alors passer en mode non authentifié pour l'impression") - sys.exit(1) # On stoppe l'imprimante car problème de configuration - else: - sys.stderr.write("ERROR: Erreur : adhérent %s non trouvé\n" % user) - sys.exit(0) # On conclue l'impression sans stopper l'imprimante + sys.stderr.write("ERROR: Erreur : adhérent %s non trouvé\n" % user) + sys.exit(0) # On conclue l'impression sans stopper l'imprimante adherent=res[0] return adherent @@ -83,9 +91,20 @@ def calcul_prix(nom_fic, media): # Options par défaut (Couleur) : mode_couleur = "Couleur" - if media== "transparency": + if media == "transparency": format = "transparent" + #Temporaire pour debugage +## fs=open(nom_fic,'r') +## fd=open('/tmp/benoit_Routard','w') +## while 1: +## txt=fs.readline() +## if txt == '': +## break +## fd.write(txt) +## fs.close() +## fd.close() + # Calcul du cout de l'impression : try: prix = couts.cout(nom_fic, mode_couleur)