diff --git a/impression/impression_canon.py b/impression/impression_canon.py index c5f4ab66..54f1e9ab 100755 --- a/impression/impression_canon.py +++ b/impression/impression_canon.py @@ -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 # @@ -158,6 +168,9 @@ class impression: _format = '(A4)' _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) +