diff options
Diffstat (limited to 'machammer/printers.py')
-rw-r--r-- | machammer/printers.py | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/machammer/printers.py b/machammer/printers.py index d3c7539..55fd31d 100644 --- a/machammer/printers.py +++ b/machammer/printers.py @@ -1,39 +1,52 @@ # -*- coding: utf-8 -*- -import subprocess +from .functions import call, popen, check_output, log + +LPSTAT = '/usr/bin/lpstat' +LPADMIN = '/usr/sbin/lpadmin' + + +def reset(): + """Reset this printing system.""" + pass + + +def delete_printer(printer): + log('Deleting printer %s' % printer) + return call(LPADMIN, '-x', printer) def delete_printers(): - for p in subprocess.check_output(['lpstat', '-p']).strip().split("\n"): - subprocess.call(['lpadmin', '-x', p[1]]) + """Delete all print queues on the system.""" + for p in check_output(LPSTAT, '-p').split("\n"): + printer = p.split(' ')[1] + delete_printer(printer) -def add_printer(printer, options={}): - """ - Add a printer +def add_printer(printer, options={}, delete=True): + """Add a printer queue. + A printer is a tuple (name, PPD path, LPD address) """ - cmd = ['/usr/sbin/lpadmin', '-x', printer[1]] - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - (lpadminxOut, lpadminxErr) = proc.communicate() + if delete: + delete_printer(printer[1]) + + name = printer[0] + ppd = '/Library/Printers/PPDs/Contents/Resources/%s' % printer[1] # Install the printer cmd = ['/usr/sbin/lpadmin', - '-p', printer[0].replace(' ', '-'), - '-L', printer[0][0:2], - '-D', printer[0], + '-p', name.replace(' ', '-'), + '-L', name[0:2], + '-D', name, '-v', 'lpd://%s' % printer[2], - '-P', '/Library/Printers/PPDs/Contents/Resources/%s' % printer[1], + '-P', ppd, '-E', '-o', 'printer-is-shared=false', '-o', 'printer-error-policy=abort-job'] for option in options.keys(): - cmd.append("-o") - cmd.append(str(option) + "=" + str(options[option])) - - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - (res, err) = proc.communicate() + cmd.append('-o') + cmd.append(str(option) + '=' + str(options[option])) - if err: - raise Exception(err) + return popen(cmd) |