On ajoute un identifiant unique à chaque jobs

Ignore-this: 1db012c617fb2d46109c6f401b32bc9a

darcs-hash:20120618061904-3a55a-dad5b531d133a383d1abdfa9f2cf548987922444.gz
This commit is contained in:
Valentin Samir 2012-06-18 08:19:04 +02:00
parent 80874f187b
commit 40d688c270

View file

@ -120,6 +120,16 @@ class SettingsError(Exception):
Erreur de paramètres.
"""
pass
def _uniq_jid():
""" Alloue un jid unique """
fname = '/var/impression/fichiers/jid'
## Maybe need a lock ?
f = file(fname,'r+')
cur = int(f.read())+1
f.seek(0)
f.write(str(cur))
f.close()
return cur
# ######################################################## #
# CLASSE IMPRESSION #
@ -159,6 +169,9 @@ class impression:
_width = 595.28
_height = 841.89
# Jid unique, à définir avant l'impression
_jid = 0
def __init__(self, path_to_pdf, adh = None):
"""impression(path_to_pdf [, adh])
@ -357,12 +370,14 @@ class impression:
imprime le document pdf. débite l'adhérent si adhérent il y a.
(si il a été indiqué à l'initialisation de l'objet)
"""
self._jid = _uniq_jid()
# debite l'adhérent si adherent il y a
if (self._adh != None):
adh = self._get_adh(self._adh)
if (self._prix > (adh.solde() - DECOUVERT_AUTHORISE)):
raise SoldeInsuffisant
adh.solde(-self._prix, "impression: " + self._fichier)
adh.solde(-self._prix, "impression(%d): %s" % (self._jid,self._fichier))
adh.save()
del adh
# imprime le document
@ -423,6 +438,8 @@ class impression:
adh = CransLdap().getProprio(adh, 'w')
return adh
## ################################# ##
## fonction qui imprime pour de vrai ##
## ################################# ##
@ -434,9 +451,9 @@ class impression:
self._pdfbook()
if (self._adh != None):
self.log.info('Impression [%s] : %s' % (self._adh, self._fichier))
self.log.info('Impression(%d) [%s] : %s' % (self._jid, self._adh, self._fichier))
else:
self.log.info("Impression : %s" % self._fichier)
self.log.info("Impression(%d) : %s" % (self._jid, self._fichier))
# Envoi du fichier à CUPS
options = ''
@ -451,8 +468,8 @@ class impression:
options += ' -P canon_test'
# Pour spécifier un jobname de la forme adh:nom_du_fichier
jobname = '%s:%s' % (self._adh, self._fichier.split('/')[-1].replace("\"","\\\""))
# Pour spécifier un jobname de la forme jid:adh:nom_du_fichier
jobname = '%d:%s:%s' % (self._jid, self._adh, self._fichier.split('/')[-1].replace("\"","\\\""))
# Ce nom apparaît sur l'interface d'impression de l'imprimante:
options += " -o CNDocName=\"%s\"" %jobname
@ -532,3 +549,4 @@ class impression:
self.log.error("erreur impression")
self.log.error("lpr status:%d | rep: %s" % (status, rep))
raise PrintError, "%s \n status:%d rep: %s" % (cmd, status, rep)