aboutsummaryrefslogtreecommitdiffstats
path: root/machammer/printers.py
diff options
context:
space:
mode:
Diffstat (limited to 'machammer/printers.py')
-rw-r--r--machammer/printers.py53
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)