* On se protge contre les noms de fichiers farfelus.

* On affiche le cot sur la page de garde.

darcs-hash:20060203165336-68412-94f3fbbda6743fae96d2e76b636a23ee26ac9387.gz
This commit is contained in:
glondu 2006-02-03 17:53:36 +01:00
parent ff2a5894c6
commit 53bb62fc81

View file

@ -85,12 +85,7 @@ class fichier_impression :
def fait_payer(self): def fait_payer(self):
self.user_ldap = utilisateur(self.user,True) self.user_ldap = utilisateur(self.user,True)
pdf = self.nom_fichier_pdf.split('/')[-1] self.user_ldap.solde(-self.cout, self.nom_job)
if self.nom_job:
commentaire = '%s (%s)' % (self.nom_job, pdf)
else:
commentaire = pdf
self.user_ldap.solde(-self.cout, commentaire)
self.user_ldap.save() self.user_ldap.save()
return not (self.cout > (self.user_ldap.solde() - impression.decouvert)) return not (self.cout > (self.user_ldap.solde() - impression.decouvert))
@ -147,7 +142,9 @@ class fichier_impression :
options +=' -U %s' % self.user options +=' -U %s' % self.user
# Pour demander une page de garde # Pour demander une page de garde
options +=' -o job-sheets=crans' #page de garde de type standard 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' options += ' -o InputSlot=Tray1 -o Media=Transparency'
if self.taille == 'A4': if self.taille == 'A4':
@ -209,19 +206,15 @@ class fichier_impression :
body=string.join(self.list_messages_importants) body=string.join(self.list_messages_importants)
return "<p>%s</p>" % body return "<p>%s</p>" % body
def enregistre_pdf(self,f_value,f_nom,dossier): def enregistre_pdf(self, f_value, f_nom, dossier):
f_nom = f_nom.translate(string.maketrans(string.punctuation + (fd_fichier_desc, self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc', prefix='job', dir=dossier)
string.whitespace,
'_' * len(string.punctuation+string.whitespace)))
(fd_fichier_desc, self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc',
prefix=f_nom,
dir=dossier)
os.close(fd_fichier_desc) os.close(fd_fichier_desc)
os.chmod(self.nom_fichier_desc, 33184) self.nom_fichier_pdf = self.nom_fichier_desc.replace('.desc', '.pdf')
self.nom_fichier_pdf = "%s.pdf" % self.nom_fichier_desc[0:-5] fd_fichier_pdf = open(self.nom_fichier_pdf, 'w')
file_obj_pdf = open(self.nom_fichier_pdf, 'w') fd_fichier_pdf.write(f_value)
file_obj_pdf.write(f_value) fd_fichier_pdf.close()
file_obj_pdf.close() os.chmod(self.nom_fichier_pdf, 0640)
os.chmod(self.nom_fichier_desc, 0640)
self.nbr_pages = int(os.popen("pdfinfo '%s' | grep Pages " % (self.nom_fichier_pdf)).readline().split()[1]) self.nbr_pages = int(os.popen("pdfinfo '%s' | grep Pages " % (self.nom_fichier_pdf)).readline().split()[1])
self.modif_epoch = time.time() self.modif_epoch = time.time()
@ -340,7 +333,7 @@ def utilisateur(user, rw):
sys.exit(0) # On conclue l'avant-impression sans stopper l'imprimante sys.exit(0) # On conclue l'avant-impression sans stopper l'imprimante
adherent = res[0] adherent = res[0]
sys.stderr.write("DEBUG: Adherent %s (aid=%d) recupere.\n" % (user, adherent.id())) sys.stderr.write("DEBUG: Adherent %s (aid=%s) recupere.\n" % (user, adherent.id()))
return adherent return adherent
################################################################################ ################################################################################