[IMP] Mass rename \t to 4 spaces
[odoo/odoo.git] / openerp / osv / osv.py
index 76a403b..877e804 100644 (file)
@@ -21,6 +21,7 @@
 
 #.apidoc title: Objects Services (OSV)
 
+from functools import wraps
 import logging
 from psycopg2 import IntegrityError, errorcodes
 
@@ -29,11 +30,12 @@ import openerp
 import openerp.netsvc as netsvc
 import openerp.pooler as pooler
 import openerp.sql_db as sql_db
-from openerp.tools.func import wraps
 from openerp.tools.translate import translate
 from openerp.osv.orm import MetaModel, Model, TransientModel, AbstractModel
 import openerp.exceptions
 
+_logger = logging.getLogger(__name__)
+
 # Deprecated.
 class except_osv(Exception):
     def __init__(self, name, value):
@@ -45,7 +47,6 @@ service = None
 
 class object_proxy(object):
     def __init__(self):
-        self.logger = logging.getLogger('web-services')
         global service
         service = self
 
@@ -130,7 +131,7 @@ class object_proxy(object):
                                         tr(osv_pool._sql_error[key], 'sql_constraint') or inst[0])
                 if inst.pgcode in (errorcodes.NOT_NULL_VIOLATION, errorcodes.FOREIGN_KEY_VIOLATION, errorcodes.RESTRICT_VIOLATION):
                     msg = _('The operation cannot be completed, probably due to the following:\n- deletion: you may be trying to delete a record while other records still reference it\n- creation/update: a mandatory field is not correctly set')
-                    self.logger.debug("IntegrityError", exc_info=True)
+                    _logger.debug("IntegrityError", exc_info=True)
                     try:
                         errortxt = inst.pgerror.replace('«','"').replace('»','"')
                         if '"public".' in errortxt:
@@ -151,7 +152,7 @@ class object_proxy(object):
                 else:
                     netsvc.abort_response(1, _('Integrity Error'), 'warning', inst[0])
             except Exception:
-                self.logger.exception("Uncaught exception")
+                _logger.exception("Uncaught exception")
                 raise
 
         return wrapper
@@ -162,6 +163,9 @@ class object_proxy(object):
             raise except_osv('Object Error', 'Object %s doesn\'t exist' % str(obj))
         return getattr(object, method)(cr, uid, *args, **kw)
 
+    def execute_kw(self, db, uid, obj, method, args, kw=None):
+        return self.execute(db, uid, obj, method, *args, **kw or {})
+
     @check
     def execute(self, db, uid, obj, method, *args, **kw):
         cr = pooler.get_db(db).cursor()
@@ -171,7 +175,7 @@ class object_proxy(object):
                     raise except_osv('Access Denied', 'Private methods (such as %s) cannot be called remotely.' % (method,))
                 res = self.execute_cr(cr, uid, obj, method, *args, **kw)
                 if res is None:
-                    self.logger.warning('The method %s of the object %s can not return `None` !', method, obj)
+                    _logger.warning('The method %s of the object %s can not return `None` !', method, obj)
                 cr.commit()
             except Exception:
                 cr.rollback()