[MERGE] better management for python dependencies of the hardware driver modules
bzr revid: fva@openerp.com-20140113105447-4ylwptc139oho2m6
This commit is contained in:
commit
8a43a64250
|
@ -37,6 +37,9 @@ that would need such functionality.
|
||||||
""",
|
""",
|
||||||
'author': 'OpenERP SA',
|
'author': 'OpenERP SA',
|
||||||
'depends': ['hw_proxy'],
|
'depends': ['hw_proxy'],
|
||||||
|
'external_dependencies': {
|
||||||
|
'python' : ['usb.core','serial','qrcode'],
|
||||||
|
},
|
||||||
'test': [
|
'test': [
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
|
|
|
@ -14,8 +14,6 @@ import usb.core
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from .. import escpos
|
from .. import escpos
|
||||||
from ..escpos import printer
|
from ..escpos import printer
|
||||||
#import escpos
|
|
||||||
#import escpos.printer
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from openerp import http
|
from openerp import http
|
||||||
|
@ -29,6 +27,13 @@ class EscposDriver(hw_proxy.Proxy):
|
||||||
supported_printers = [
|
supported_printers = [
|
||||||
{ 'vendor' : 0x04b8, 'product' : 0x0e03, 'name' : 'Epson TM-T20' }
|
{ 'vendor' : 0x04b8, 'product' : 0x0e03, 'name' : 'Epson TM-T20' }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def connected_usb_devices(self,devices):
|
||||||
|
connected = []
|
||||||
|
for device in devices:
|
||||||
|
if usb.core.find(idVendor=device['vendor'], idProduct=device['product']) != None:
|
||||||
|
connected.append(device)
|
||||||
|
return connected
|
||||||
|
|
||||||
def get_escpos_printer(self):
|
def get_escpos_printer(self):
|
||||||
printers = self.connected_usb_devices(self.supported_printers)
|
printers = self.connected_usb_devices(self.supported_printers)
|
||||||
|
|
|
@ -7,30 +7,21 @@ import openerp
|
||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
import subprocess
|
import subprocess
|
||||||
import usb.core
|
|
||||||
import escpos
|
|
||||||
import escpos.printer
|
|
||||||
import werkzeug
|
import werkzeug
|
||||||
import werkzeug.wrappers
|
import werkzeug.wrappers
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
from openerp import http
|
from openerp import http
|
||||||
from openerp.http import request
|
from openerp.http import request
|
||||||
from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template
|
from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
class Proxy(http.Controller):
|
class Proxy(http.Controller):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.scale = 'closed'
|
self.scale = 'closed'
|
||||||
self.scale_weight = 0.0
|
self.scale_weight = 0.0
|
||||||
|
|
||||||
def connected_usb_devices(self,devices):
|
|
||||||
connected = []
|
|
||||||
for device in devices:
|
|
||||||
if usb.core.find(idVendor=device['vendor'], idProduct=device['product']) != None:
|
|
||||||
connected.append(device)
|
|
||||||
return connected
|
|
||||||
|
|
||||||
@http.route('/hw_proxy/hello', type='http', auth='admin')
|
@http.route('/hw_proxy/hello', type='http', auth='admin')
|
||||||
def helloajx(self):
|
def helloajx(self):
|
||||||
return request.make_response('ping', {
|
return request.make_response('ping', {
|
||||||
|
|
|
@ -12,7 +12,12 @@ from openerp.http import request
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
from evdev import InputDevice, ecodes, categorize, list_devices
|
try:
|
||||||
|
import evdev
|
||||||
|
except ImportError:
|
||||||
|
_logger.error('OpenERP module hw_scanner depends on the evdev python module')
|
||||||
|
evdev = None
|
||||||
|
|
||||||
from select import select
|
from select import select
|
||||||
|
|
||||||
class ScannerDriver(hw_proxy.Proxy):
|
class ScannerDriver(hw_proxy.Proxy):
|
||||||
|
@ -76,13 +81,15 @@ class ScannerDriver(hw_proxy.Proxy):
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_device(self):
|
def get_device(self):
|
||||||
|
if not evdev:
|
||||||
|
return None
|
||||||
devices = [ device for device in listdir(self.input_dir)]
|
devices = [ device for device in listdir(self.input_dir)]
|
||||||
keyboards = [ device for device in devices if 'kbd' in device ]
|
keyboards = [ device for device in devices if 'kbd' in device ]
|
||||||
scanners = [ device for device in devices if ('barcode' in device.lower()) or ('scanner' in device.lower()) ]
|
scanners = [ device for device in devices if ('barcode' in device.lower()) or ('scanner' in device.lower()) ]
|
||||||
if len(scanners) > 0:
|
if len(scanners) > 0:
|
||||||
return InputDevice(join(self.input_dir,scanners[0]))
|
return evdev.InputDevice(join(self.input_dir,scanners[0]))
|
||||||
elif len(keyboards) > 0:
|
elif len(keyboards) > 0:
|
||||||
return InputDevice(join(self.input_dir,keyboards[0]))
|
return evdev.InputDevice(join(self.input_dir,keyboards[0]))
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -105,9 +112,9 @@ class ScannerDriver(hw_proxy.Proxy):
|
||||||
device.ungrab()
|
device.ungrab()
|
||||||
return ''
|
return ''
|
||||||
for event in device.read():
|
for event in device.read():
|
||||||
if event.type == ecodes.EV_KEY:
|
if event.type == evdev.ecodes.EV_KEY:
|
||||||
|
#_logger.debug('Evdev Keyboard event %s',evdev.categorize(event))
|
||||||
if event.value == 1: # keydown events
|
if event.value == 1: # keydown events
|
||||||
#print categorize(event)
|
|
||||||
if event.code in self.keymap:
|
if event.code in self.keymap:
|
||||||
if shift:
|
if shift:
|
||||||
barcode.append(self.keymap[event.code][1])
|
barcode.append(self.keymap[event.code][1])
|
||||||
|
|
Loading…
Reference in New Issue