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""" - 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)