Des broutilles.

Commit juste pour viter les CVS status.

darcs-hash:20050624095140-061a7-3a5f5a6a81b43ad923d97e6cdc6ce05327fb45f8.gz
This commit is contained in:
rozel 2005-06-24 11:51:40 +02:00
parent 9c33750a20
commit 55664a2882
2 changed files with 36 additions and 23 deletions

View file

@ -1,22 +1,18 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- 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 # /usr/lib/cups/backend/devis et /usr/lib/cups/backend/laserjet
# Écrit par Benoit # Écrit par Benoit
# modifie par Brice DUBOST # modifié par Brice DUBOST
import locale import locale
locale.setlocale(locale.LC_ALL, 'fr_FR') locale.setlocale(locale.LC_ALL, 'fr_FR')
import os, commands import commands, os, string, sys
import string import tempfile # non utilisé en ce moment
import re
import sys
import tempfile
sys.path.append('/usr/scripts/gestion') sys.path.append('/usr/scripts/gestion')
from config import impression from config import impression
@ -107,8 +103,6 @@ class cout:
else: else:
c_format = impression.c_a4 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. # Vérification du format de fichier.
try: try:
en_tete=open(fichier).read(4) 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) ) (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): if (status != 0):
self.erreur="ERREUR : Ghostscript : Fichier Postscript invalide.\n" self.erreur="ERREUR : Ghostscript : Fichier Postscript invalide.\n"
self.erreur="Le message d'erreur est le suivant :\n"
self.erreur+= rep self.erreur+= rep
# On détaille l'erreur dans le mail et # On détaille l'erreur dans le mail et
# il faut stopper l'impression. # il faut stopper l'impression.
@ -204,7 +199,6 @@ class cout:
</p>\n<p> </p>\n<p>
</p>\n""" </p>\n"""
if not self.erreur: if not self.erreur:
return self.remplis_template(template) return self.remplis_template(template)
else: else:

View file

@ -7,6 +7,7 @@
# Licence : GNU General Public Licence, version 2 # Licence : GNU General Public Licence, version 2
import sys, tempfile import sys, tempfile
from ipp import IPPMessage
import couts import couts
sys.path.append('/usr/scripts/gestion') sys.path.append('/usr/scripts/gestion')
from ldap_crans import crans_ldap from ldap_crans import crans_ldap
@ -14,31 +15,38 @@ from ldap_crans import crans_ldap
def utilisateur(job, user, rw): def utilisateur(job, user, rw):
""" Renvoie l'adherent qui imprime le job """ 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) * 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, * rw vaut 1 si on veut modifier le compte LDAP de l'adhérent,
0 dans le cas contraire 0 dans le cas contraire
""" """
# Attention, Samba fournit root pour sys.argv[2] # Utilisation de Samba qui s'authentifie en root : on parse le spool
# en mode Authentifie 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 # Récupération de l'adhérent
base = crans_ldap() base = crans_ldap()
if rw==0 : if rw == 0 :
res=base.search("login=%s"%user)['adherent'] res=base.search("login=%s"%user)['adherent']
else: else:
res=base.search("login=%s"%user,'w')['adherent'] res=base.search("login=%s"%user,'w')['adherent']
# Si on ne trouve rien : # Si on ne trouve rien :
if len(res) != 1 : if len(res) != 1 :
if user=="root": sys.stderr.write("ERROR: Erreur : adhérent %s non trouvé\n" % user)
sys.stderr.write("ERROR: Utilisateur Root passé en paramètre\n") sys.exit(0) # On conclue l'impression sans stopper l'imprimante
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
adherent=res[0] adherent=res[0]
return adherent return adherent
@ -83,9 +91,20 @@ def calcul_prix(nom_fic, media):
# Options par défaut (Couleur) : # Options par défaut (Couleur) :
mode_couleur = "Couleur" mode_couleur = "Couleur"
if media== "transparency": if media == "transparency":
format = "transparent" 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 : # Calcul du cout de l'impression :
try: try:
prix = couts.cout(nom_fic, mode_couleur) prix = couts.cout(nom_fic, mode_couleur)