scripts/impression/impression_wrapper.py

52 lines
2.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
from impression_canon import DECOUVERT_AUTHORISE, DICT_AGRAFAGE, AVAIL_AGRAFES,\
DICT_PAPIER, FichierInvalide, SoldeInsuffisant, PrintError, SettingsError
import impression_canon
class impression(impression_canon.impression):
""" Extension de la classe d'impression de l'imprimante canon,
la seule méthode ayant un comportement différent est _exec_imprime
qui fait appel à canon_wrapper.py au lieu de lp"""
def _exec_imprime(self):
""" Envoie l'impression à l'imprimante avec les parametres actuels """
# Ce fichier est rempli par le script print_status.py du même dossier
# à intervalle régulier
with open('/usr/scripts/var/print_status/error.txt', 'r') as stat:
err = stat.read()
if err:
raise PrintError('Imprimante en panne :' + err)
opt=[]
if (self._adh != None):
self.log.info('Impression(%d) [%s] : %s' % (self._jid, self._adh, self._fichier))
else:
self.log.info("Impression(%d) : %s" % (self._jid, self._fichier))
# 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("\"","\\\""))
opt += ['--jobname', jobname]
opt += ['--copies', str(self._settings['copies'])]
opt += ['--page-size', self._settings['papier']]
opt += ['--colors', 'yes' if self._settings['couleur'] else 'no']
if self._settings['livret']:
opt += ['--duplex-type', 'book']
else: # Not livret
if self._settings['recto_verso']:
opt += ['--duplex-type', ('long' if self._settings['portrait']
else 'short')+'-edge']
else:
opt += ['--duplex-type', 'one-sided']
opt += ['--staple-position', self._settings['agrafage']]
opt.append(self._fichier)
self.log.info("Impression(%d) : %s" % (self._jid, " ".join(opt)))
subprocess.Popen(['/usr/scripts/impression/canon_wrapper.py'] + opt)