diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/hw_drivers/iot_handlers/interfaces/PrinterInterface.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/hw_drivers/iot_handlers/interfaces/PrinterInterface.py')
| -rw-r--r-- | addons/hw_drivers/iot_handlers/interfaces/PrinterInterface.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/addons/hw_drivers/iot_handlers/interfaces/PrinterInterface.py b/addons/hw_drivers/iot_handlers/interfaces/PrinterInterface.py new file mode 100644 index 00000000..ca601dbc --- /dev/null +++ b/addons/hw_drivers/iot_handlers/interfaces/PrinterInterface.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from cups import Connection as cups_connection +from re import sub +from threading import Lock + +from odoo.addons.hw_drivers.interface import Interface + +conn = cups_connection() +PPDs = conn.getPPDs() +cups_lock = Lock() # We can only make one call to Cups at a time + +class PrinterInterface(Interface): + _loop_delay = 120 + connection_type = 'printer' + + def get_devices(self): + printer_devices = {} + with cups_lock: + printers = conn.getPrinters() + devices = conn.getDevices() + for printer in printers: + path = printers.get(printer).get('device-uri', False) + if path and path in devices: + devices.get(path).update({'supported': True}) # these printers are automatically supported + for path in devices: + if 'uuid=' in path: + identifier = sub('[^a-zA-Z0-9_]', '', path.split('uuid=')[1]) + elif 'serial=' in path: + identifier = sub('[^a-zA-Z0-9_]', '', path.split('serial=')[1]) + else: + identifier = sub('[^a-zA-Z0-9_]', '', path) + devices[path]['identifier'] = identifier + devices[path]['url'] = path + printer_devices[identifier] = devices[path] + return printer_devices |
