summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Simonis <chs@openerp.com>2010-12-13 11:51:04 +0100
committerChristophe Simonis <chs@openerp.com>2010-12-13 11:51:04 +0100
commit5bb14725d4534fe0e4f66ab4d9fdca0afd73b74e (patch)
treeea00fcf4dcb7e8188fb3870b914de636e4e96a6b
parent9af72a1af1da64a622cba89dc99e4147586df11f (diff)
[IMP] osv: the object pool is not a service anymore
bzr revid: chs@openerp.com-20101213105104-jpctooc6j7yc8i8i
-rw-r--r--bin/osv/osv.py73
1 files changed, 37 insertions, 36 deletions
diff --git a/bin/osv/osv.py b/bin/osv/osv.py
index e7b84351a23..c66ee896425 100644
--- a/bin/osv/osv.py
+++ b/bin/osv/osv.py
@@ -27,8 +27,6 @@ import orm
import netsvc
import pooler
import copy
-import sys
-import traceback
import logging
from psycopg2 import IntegrityError, errorcodes
from tools.func import wraps
@@ -46,7 +44,12 @@ class except_osv(Exception):
self.args = (exc_type, name)
-class osv_pool(netsvc.Service):
+class object_proxy(netsvc.Service):
+ def __init__(self):
+ self.logger = logging.getLogger('web-services')
+ netsvc.Service.__init__(self, 'object_proxy', audience='')
+ self.exportMethod(self.exec_workflow)
+ self.exportMethod(self.execute)
def check(f):
@wraps(f)
@@ -151,41 +154,12 @@ class osv_pool(netsvc.Service):
self.abortResponse(1, _('Integrity Error'), 'warning', msg)
else:
self.abortResponse(1, _('Integrity Error'), 'warning', inst[0])
- except Exception, e:
+ except Exception:
self.logger.exception("Uncaught exception")
raise
return wrapper
-
- def __init__(self):
- self._ready = False
- self.obj_pool = {}
- self.module_object_list = {}
- self.created = []
- self._sql_error = {}
- self._store_function = {}
- self._init = True
- self._init_parent = {}
- self.logger = logging.getLogger("web-services")
- netsvc.Service.__init__(self, 'object_proxy', audience='')
- self.exportMethod(self.obj_list)
- self.exportMethod(self.exec_workflow)
- self.exportMethod(self.execute)
-
- def init_set(self, cr, mode):
- different = mode != self._init
- if different:
- if mode:
- self._init_parent = {}
- if not mode:
- for o in self._init_parent:
- self.get(o)._parent_store_compute(cr)
- self._init = mode
-
- self._ready = True
- return different
-
def execute_cr(self, cr, uid, obj, method, *args, **kw):
object = pooler.get_pool(cr.dbname).get(obj)
if not object:
@@ -194,13 +168,12 @@ class osv_pool(netsvc.Service):
@check
def execute(self, db, uid, obj, method, *args, **kw):
- db, pool = pooler.get_db_and_pool(db)
- cr = db.cursor()
+ cr = pooler.get_db(db).cursor()
try:
try:
if method.startswith('_'):
raise except_osv('Access Denied', 'Private methods (such as %s) cannot be called remotely.' % (method,))
- res = pool.execute_cr(cr, uid, obj, method, *args, **kw)
+ 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)
cr.commit()
@@ -229,6 +202,34 @@ class osv_pool(netsvc.Service):
cr.close()
return res
+object_proxy()
+
+class osv_pool(object):
+ def __init__(self):
+ self._ready = False
+ self.obj_pool = {}
+ self.module_object_list = {}
+ self.created = []
+ self._sql_error = {}
+ self._store_function = {}
+ self._init = True
+ self._init_parent = {}
+ self.logger = logging.getLogger("pool")
+
+ def init_set(self, cr, mode):
+ different = mode != self._init
+ if different:
+ if mode:
+ self._init_parent = {}
+ if not mode:
+ for o in self._init_parent:
+ self.get(o)._parent_store_compute(cr)
+ self._init = mode
+
+ self._ready = True
+ return different
+
+
def obj_list(self):
return self.obj_pool.keys()