diff --git a/addons/account/demo/account_demo.xml b/addons/account/demo/account_demo.xml
index 8a450c0b6aa..5ee0385f858 100644
--- a/addons/account/demo/account_demo.xml
+++ b/addons/account/demo/account_demo.xml
@@ -18,10 +18,18 @@
Fiscal Periods
-->
+
+
+
+
+
+
+
+
+
-
@@ -30,7 +38,6 @@
-
@@ -40,7 +47,6 @@
-
@@ -49,7 +55,6 @@
-
@@ -58,7 +63,6 @@
-
@@ -68,7 +72,6 @@
-
@@ -76,7 +79,6 @@
-
@@ -85,7 +87,6 @@
-
@@ -94,7 +95,6 @@
-
@@ -103,7 +103,6 @@
-
@@ -112,7 +111,6 @@
-
@@ -121,7 +119,6 @@
-
diff --git a/addons/hw_escpos/__openerp__.py b/addons/hw_escpos/__openerp__.py
index 830b78300ea..127dbd5cf0b 100644
--- a/addons/hw_escpos/__openerp__.py
+++ b/addons/hw_escpos/__openerp__.py
@@ -37,6 +37,9 @@ that would need such functionality.
""",
'author': 'OpenERP SA',
'depends': ['hw_proxy'],
+ 'external_dependencies': {
+ 'python' : ['usb.core','serial','qrcode'],
+ },
'test': [
],
'installable': True,
diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py
index 78ed77a2318..d284d05dfdd 100644
--- a/addons/hw_escpos/controllers/main.py
+++ b/addons/hw_escpos/controllers/main.py
@@ -14,8 +14,6 @@ import usb.core
from openerp.tools.translate import _
from .. import escpos
from ..escpos import printer
-#import escpos
-#import escpos.printer
from PIL import Image
from openerp import http
@@ -29,6 +27,13 @@ class EscposDriver(hw_proxy.Proxy):
supported_printers = [
{ '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):
printers = self.connected_usb_devices(self.supported_printers)
diff --git a/addons/hw_proxy/controllers/main.py b/addons/hw_proxy/controllers/main.py
index 967323ae0d6..6ddf94843fd 100644
--- a/addons/hw_proxy/controllers/main.py
+++ b/addons/hw_proxy/controllers/main.py
@@ -7,30 +7,21 @@ import openerp
import time
import random
import subprocess
-import usb.core
-import escpos
-import escpos.printer
import werkzeug
import werkzeug.wrappers
+_logger = logging.getLogger(__name__)
+
from openerp import http
from openerp.http import request
from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template
-_logger = logging.getLogger(__name__)
class Proxy(http.Controller):
def __init__(self):
self.scale = 'closed'
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')
def helloajx(self):
return request.make_response('ping', {
diff --git a/addons/hw_scanner/controllers/main.py b/addons/hw_scanner/controllers/main.py
index ec56a733671..69fd29f5128 100644
--- a/addons/hw_scanner/controllers/main.py
+++ b/addons/hw_scanner/controllers/main.py
@@ -12,7 +12,12 @@ from openerp.http import request
_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
class ScannerDriver(hw_proxy.Proxy):
@@ -76,13 +81,15 @@ class ScannerDriver(hw_proxy.Proxy):
}
def get_device(self):
+ if not evdev:
+ return None
devices = [ device for device in listdir(self.input_dir)]
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()) ]
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:
- return InputDevice(join(self.input_dir,keyboards[0]))
+ return evdev.InputDevice(join(self.input_dir,keyboards[0]))
else:
return None
@@ -105,9 +112,9 @@ class ScannerDriver(hw_proxy.Proxy):
device.ungrab()
return ''
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
- #print categorize(event)
if event.code in self.keymap:
if shift:
barcode.append(self.keymap[event.code][1])
diff --git a/addons/project/project.py b/addons/project/project.py
index ae3d0ad6d9d..ec10dc515a0 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -79,12 +79,6 @@ class project(osv.osv):
return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order,
context=context, count=count)
- def _complete_name(self, cr, uid, ids, name, args, context=None):
- res = {}
- for m in self.browse(cr, uid, ids, context=context):
- res[m.id] = (m.parent_id and (m.parent_id.name + '/') or '') + m.name
- return res
-
def onchange_partner_id(self, cr, uid, ids, part=False, context=None):
partner_obj = self.pool.get('res.partner')
val = {}
@@ -234,7 +228,6 @@ class project(osv.osv):
_visibility_selection = lambda self, *args, **kwargs: self._get_visibility_selection(*args, **kwargs)
_columns = {
- 'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of Projects."),
'analytic_account_id': fields.many2one('account.analytic.account', 'Contract/Analytic', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.", ondelete="cascade", required=True),