Typographie.
darcs-hash:20060219000118-68412-2a40af702ab413bdba443be66a148ae23afb8aae.gz
This commit is contained in:
parent
fe603296b4
commit
b52b0eb7a0
1 changed files with 64 additions and 63 deletions
|
@ -8,11 +8,12 @@ Inspir
|
|||
Licence : GNU General Public Licence, version 2
|
||||
"""
|
||||
|
||||
import sys, time, tempfile, os, commands, string, random, syslog
|
||||
import sys, time, tempfile, os, commands, string, random
|
||||
sys.path.append('/usr/scripts/impression')
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
from config import impression
|
||||
from ldap_crans import crans_ldap
|
||||
from syslog import openlog, syslog, LOG_DEBUG
|
||||
|
||||
duree_vie_pdf=3600
|
||||
|
||||
|
@ -41,60 +42,60 @@ class test:
|
|||
|
||||
################################################################################
|
||||
|
||||
class fichier_impression :
|
||||
nom_job=''
|
||||
nbr_pages=1
|
||||
nb_copie=1
|
||||
taille="A4"
|
||||
recto_verso=False
|
||||
transparent=False
|
||||
couleur=True
|
||||
cout=0.0
|
||||
portrait=True
|
||||
user=""
|
||||
user_ldap=None # sera une instance de l'utilisateur dans la base ldap.
|
||||
imprime=-1 #-2 impression en suspend, -1 mise dans la file
|
||||
# d'attente, 0 devis, time pour l'heure, -3 déja
|
||||
# imprimé ou devis fait depuis trops longtemps : le
|
||||
# pdf n'est plus disponible
|
||||
nom_fichier_pdf="" # chemin et nom du pdf
|
||||
nom_fichier_desc="" # chemin et nom du fichier contenant les
|
||||
# options de l'utilisateur
|
||||
list_messages=[] # liste d'erreur et de remarque
|
||||
list_messages_importants=[]
|
||||
list_messages_admin=[] # liste d'erreur réservé au administrateur
|
||||
erreur_critique=False # True si une erreur empêchant
|
||||
# l'impression est apparue
|
||||
code=None # code pour le digicode
|
||||
modif_epoch=0.0 # moment de création du job ou devis. exprimé
|
||||
# en epoch (float) : nombre de seconde depuis
|
||||
# la référence du temps unix (+-=1970)
|
||||
job_id=None # champs pour de futures améliorations
|
||||
class fichier_impression:
|
||||
nom_job = ''
|
||||
nbr_pages = 1
|
||||
nb_copie = 1
|
||||
taille = "A4"
|
||||
recto_verso = False
|
||||
transparent = False
|
||||
couleur = True
|
||||
cout = 0.0
|
||||
portrait = True
|
||||
user = ""
|
||||
user_ldap = None # sera une instance de l'utilisateur dans la base ldap.
|
||||
imprime = -1 #-2 impression en suspend, -1 mise dans la file
|
||||
# d'attente, 0 devis, time pour l'heure, -3 déja
|
||||
# imprimé ou devis fait depuis trops longtemps : le
|
||||
# pdf n'est plus disponible
|
||||
nom_fichier_pdf = "" # chemin et nom du pdf
|
||||
nom_fichier_desc = "" # chemin et nom du fichier contenant les
|
||||
# options de l'utilisateur
|
||||
list_messages = [] # liste d'erreur et de remarque
|
||||
list_messages_importants = []
|
||||
list_messages_admin = [] # liste d'erreur réservé au administrateur
|
||||
erreur_critique = False # True si une erreur empêchant
|
||||
# l'impression est apparue
|
||||
code = None # code pour le digicode
|
||||
modif_epoch = 0.0 # moment de création du job ou devis. exprimé
|
||||
# en epoch (float) : nombre de seconde depuis
|
||||
# la référence du temps unix (+-=1970)
|
||||
job_id = None # champs pour de futures améliorations
|
||||
|
||||
def actualise_cout(self):
|
||||
# Calcul du cout de l'impression :
|
||||
retour = cout(self)
|
||||
|
||||
# Met le prix dans cout s'il n'y a pas d'erreur
|
||||
if type(retour) is float :
|
||||
if type(retour) is float:
|
||||
self.cout = retour
|
||||
self.list_messages_importants.append('cout')
|
||||
else:
|
||||
self.erreur_critique = True
|
||||
self.list_messages_importants.append('erreur_critique')
|
||||
self.list_messages_admin.append('erreur_cout')
|
||||
syslog.openlog("impression")
|
||||
syslog.syslog(retour)
|
||||
openlog("impression")
|
||||
syslog(retour)
|
||||
|
||||
# Repond vrai si le solde est assez élevé.
|
||||
def test_cout(self):
|
||||
if self.user_ldap == None:
|
||||
self.user_ldap = utilisateur(self.user, False)
|
||||
return not (self.cout > (self.user_ldap.solde() -
|
||||
impression.decouvert)) # /!\ decouvert est négatif.
|
||||
# /!\ decouvert est négatif.
|
||||
return not (self.cout > (self.user_ldap.solde() - impression.decouvert))
|
||||
|
||||
def fait_payer(self):
|
||||
self.user_ldap = utilisateur(self.user,True)
|
||||
self.user_ldap = utilisateur(self.user, True)
|
||||
self.user_ldap.solde(-self.cout, self.nom_job)
|
||||
self.user_ldap.save()
|
||||
return not (self.cout > (self.user_ldap.solde() - impression.decouvert))
|
||||
|
@ -107,7 +108,7 @@ class fichier_impression :
|
|||
|
||||
for i in range(1000):
|
||||
# On génère un code
|
||||
code = rand.randint(100000,999999)
|
||||
code = rand.randint(100000, 999999)
|
||||
# Si le code est libre, on sort de la boucle
|
||||
if not os.path.exists("/var/impression/codes/%d" % code):
|
||||
break
|
||||
|
@ -129,7 +130,7 @@ class fichier_impression :
|
|||
codefichier = open("/var/impression/codes/%d" % code, 'w')
|
||||
codefichier.write("Utilisateur %s\n" % self.user)
|
||||
codefichier.close()
|
||||
self.code=code
|
||||
self.code = code
|
||||
self.list_messages_importants.append('code')
|
||||
|
||||
def impression(self):
|
||||
|
@ -137,28 +138,28 @@ class fichier_impression :
|
|||
|
||||
# Création de la liste d'options
|
||||
# pour le nombre de copies
|
||||
options ='-# %d' % self.nb_copie
|
||||
options = '-# %d' % self.nb_copie
|
||||
|
||||
# Pour spécifier l'imprimante
|
||||
options +=' -P laserjet'
|
||||
options += ' -P laserjet'
|
||||
|
||||
# Pour spécifier le bac sortie
|
||||
options += ' -o OutputBin=Left'
|
||||
|
||||
# Pour spécifier la version du language postscript utilisé par pdftops
|
||||
options +=' -o pdf-level3'
|
||||
options += ' -o pdf-level3'
|
||||
|
||||
# Pour donner le titre de l'impression
|
||||
options +=" -T '%s'" % self.nom_job
|
||||
options += " -T '%s'" % self.nom_job
|
||||
|
||||
# Pour donner le login de l'adherent
|
||||
options +=' -U %s' % self.user
|
||||
options += ' -U %s' % self.user
|
||||
|
||||
# Pour demander une page de garde
|
||||
#options += ' -o job-sheets=crans' #page de garde de type standard
|
||||
options += " -o job-billing=%.2f" % self.cout
|
||||
|
||||
if self.transparent :
|
||||
if self.transparent:
|
||||
options += ' -o InputSlot=Tray1 -o Media=Transparency'
|
||||
if self.taille == 'A4':
|
||||
options += ' -o job-sheets=crans -o pdf-paper=571x817 -o PageSize=A4'
|
||||
|
@ -180,8 +181,8 @@ class fichier_impression :
|
|||
(status,rep) = commands.getstatusoutput("lpr %s %s" % (options, self.nom_fichier_pdf))
|
||||
if status != 0:
|
||||
print "<p>status:%d rep: %s</p>" % (status, rep)
|
||||
syslog.openlog("impression")
|
||||
syslog.syslog("lpr status:%d | rep: %s" % (status, rep))
|
||||
openlog("impression")
|
||||
syslog("lpr status:%d | rep: %s" % (status, rep))
|
||||
|
||||
def corrige(self):
|
||||
# Trouve le nombre de pages
|
||||
|
@ -205,7 +206,7 @@ class fichier_impression :
|
|||
self.recto_verso = False
|
||||
|
||||
def affiche_messages_html(self):
|
||||
body=""
|
||||
body = ""
|
||||
|
||||
"""
|
||||
if self.imprime:
|
||||
|
@ -218,18 +219,18 @@ class fichier_impression :
|
|||
|
||||
body=body % {'taille' : self.taille, 'code' : self.code, 'solde' : self.user_ldap.solde(), 'cout' : self.cout , 'adresse_imprimante' : impression.From_imprimante}
|
||||
"""
|
||||
body=string.join(self.list_messages_importants)
|
||||
body = string.join(self.list_messages_importants)
|
||||
return "<p>%s</p>" % body
|
||||
|
||||
def enregistre_pdf(self, f_value, f_nom, dossier):
|
||||
syslog.openlog("impression")
|
||||
try :
|
||||
openlog("impression")
|
||||
try:
|
||||
(fd_fichier_desc, self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc', prefix='job', dir=dossier)
|
||||
os.close(fd_fichier_desc)
|
||||
except Exception , inst:
|
||||
raise ErreurImpression("class :erreur dans creation de desc %s : %s" % (self.nom_fichier_desc,str(inst)))
|
||||
except Exception, inst:
|
||||
raise ErreurImpression("class :erreur dans creation de desc %s : %s" % (self.nom_fichier_desc, str(inst)))
|
||||
self.nom_fichier_pdf = self.nom_fichier_desc.replace('.desc', '.pdf')
|
||||
try :
|
||||
try:
|
||||
fd_fichier_pdf = open(self.nom_fichier_pdf, 'w')
|
||||
fd_fichier_pdf.write(f_value)
|
||||
fd_fichier_pdf.close()
|
||||
|
@ -241,7 +242,7 @@ class fichier_impression :
|
|||
self.modif_epoch = time.time()
|
||||
|
||||
def sauve_desc(self):
|
||||
try :
|
||||
try:
|
||||
file_obj_desc = open(self.nom_fichier_desc,'w')
|
||||
for key in ("erreur_critique", "nom_job", "nbr_pages",
|
||||
"nb_copie","taille", "recto_verso",
|
||||
|
@ -255,7 +256,7 @@ class fichier_impression :
|
|||
raise ErreurImpression("class : erreur dans enregistrement du .desc %s : %s" % (self.nom_fichier_desc,str(inst)))
|
||||
|
||||
def read_desc(self):
|
||||
try :
|
||||
try:
|
||||
file_obj_desc = open(self.nom_fichier_desc, 'r')
|
||||
ligne = file_obj_desc.readline()[0:-1]
|
||||
while ligne != "":
|
||||
|
@ -290,8 +291,8 @@ class fichier_impression :
|
|||
if not os.path.exists(self.nom_fichier_pdf):
|
||||
if self.imprime != -3:
|
||||
self.imprime = -4
|
||||
syslog.openlog("impression")
|
||||
syslog.syslog("class : %s a disparu" % self.nom_fichier_pdf)
|
||||
openlog("impression")
|
||||
syslog("class : %s a disparu" % self.nom_fichier_pdf)
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
|
@ -313,23 +314,23 @@ class fichier_impression :
|
|||
|
||||
self.code = "%s#" % self.code
|
||||
for key in ("nbr_pages", "nb_copie", "taille", "code"):
|
||||
corps+='<TR><td>%s</td><td>%s</td></TR>\n' % (key,
|
||||
corps += '<TR><td>%s</td><td>%s</td></TR>\n' % (key,
|
||||
str(getattr(self,key)))
|
||||
self.code = self.code[:-1]
|
||||
|
||||
corps+="</TABLE>\n</td>\n<td>\n<TABLE BORDER=2 RULES=ROWS CELLPADDDING=0>\n"
|
||||
corps += "</TABLE>\n</td>\n<td>\n<TABLE BORDER=2 RULES=ROWS CELLPADDDING=0>\n"
|
||||
for key in ("couleur", "transparent",
|
||||
"portrait", "recto_verso"):
|
||||
if getattr(self, key):
|
||||
corps += '<TR><td>%s</td></TR>\n' % dict_normale[key]
|
||||
else:
|
||||
corps += '<TR><td>%s</td></TR>\n' % dict_contraire[key]
|
||||
corps+="</TABLE>\n</td><td><U>"
|
||||
corps += "</TABLE>\n</td><td><U>"
|
||||
if self.erreur_critique:
|
||||
corps += "erreur de comptage"
|
||||
else:
|
||||
corps += "%s euros" % self.cout
|
||||
corps+="</U></td></TR>\n</TABLE>"
|
||||
corps += "</U></td></TR>\n</TABLE>"
|
||||
return corps
|
||||
|
||||
################################################################################
|
||||
|
@ -359,8 +360,8 @@ def utilisateur(user, rw):
|
|||
if len(res) != 1 :
|
||||
raise ErreurImpression("class : adherent %s introuvable\n" % user)
|
||||
adherent = res[0]
|
||||
syslog.openlog("impression")
|
||||
syslog.syslog(syslog.LOG_DEBUG,"class : Adherent %s (aid=%s) recupere.\n" % (user, adherent.id()))
|
||||
openlog("impression")
|
||||
syslog(LOG_DEBUG,"class : Adherent %s (aid=%s) recupere.\n" % (user, adherent.id()))
|
||||
return adherent
|
||||
|
||||
################################################################################
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue