[REF] openerp.pooler/openerp.sql_db: cleaner dependencies:
- openerp.pooler no longer provides get_db_only, which is a provided by sql_db - openerp.sql_db does not rely anymore on netsvc, which is goog as it was making a circular import. The downside is that db_close callers have to clean also the Agent themselves. bzr revid: vmt@openerp.com-20110420141407-au0oanwjc0t15vy5
This commit is contained in:
parent
f96d58c9c6
commit
0e1186dd3d
|
@ -26,6 +26,7 @@
|
|||
import orm
|
||||
import openerp.netsvc as netsvc
|
||||
import openerp.pooler as pooler
|
||||
import openerp.sql_db as sql_db
|
||||
import copy
|
||||
import logging
|
||||
from psycopg2 import IntegrityError, errorcodes
|
||||
|
@ -91,7 +92,7 @@ class object_proxy(netsvc.Service):
|
|||
ids = args[3]
|
||||
else:
|
||||
ids = []
|
||||
cr = pooler.get_db_only(dbname).cursor()
|
||||
cr = sql_db.db_connect(db_name).cursor()
|
||||
return src(obj, cr, uid, ids, context=(ctx or {}))
|
||||
except Exception:
|
||||
pass
|
||||
|
@ -102,7 +103,7 @@ class object_proxy(netsvc.Service):
|
|||
# be returned, it is the best we have.
|
||||
|
||||
try:
|
||||
cr = pooler.get_db_only(dbname).cursor()
|
||||
cr = sql_db.db_connect(db_name).cursor()
|
||||
res = translate(cr, name=False, source_type=ttype,
|
||||
lang=lang, source=src)
|
||||
if res:
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import sql_db
|
||||
|
||||
pool_dic = {}
|
||||
|
||||
def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False, pooljobs=True):
|
||||
|
@ -26,7 +28,7 @@ def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False,
|
|||
if not status:
|
||||
status={}
|
||||
|
||||
db = get_db_only(db_name)
|
||||
db = sql_db.db_connect(db_name)
|
||||
|
||||
if db_name in pool_dic:
|
||||
pool = pool_dic[db_name]
|
||||
|
@ -66,18 +68,6 @@ def restart_pool(db_name, force_demo=False, status=None, update_module=False):
|
|||
return get_db_and_pool(db_name, force_demo, status, update_module=update_module)
|
||||
|
||||
|
||||
def get_db_only(db_name):
|
||||
"""Return a database connection."""
|
||||
# ATTENTION:
|
||||
# do not put this import outside this function
|
||||
# sql_db must not be loaded before the logger is initialized.
|
||||
# sql_db import psycopg2.tool which create a default logger if there is not.
|
||||
# this resulting of having the logs outputed twice...
|
||||
import openerp.sql_db as sql_db
|
||||
db = sql_db.db_connect(db_name)
|
||||
return db
|
||||
|
||||
|
||||
def get_db(db_name):
|
||||
"""Return a database connection. The corresponding osv_pool is initialize."""
|
||||
return get_db_and_pool(db_name)[0]
|
||||
|
|
|
@ -154,6 +154,7 @@ class db(netsvc.ExportService):
|
|||
|
||||
def exp_drop(self, db_name):
|
||||
sql_db.close_db(db_name)
|
||||
openerp.netsvc.Agent.cancel(db_name)
|
||||
logger = netsvc.Logger()
|
||||
|
||||
db = sql_db.db_connect('template1')
|
||||
|
@ -256,6 +257,7 @@ class db(netsvc.ExportService):
|
|||
|
||||
def exp_rename(self, old_name, new_name):
|
||||
sql_db.close_db(old_name)
|
||||
openerp.netsvc.Agent.cancel(db_name)
|
||||
logger = netsvc.Logger()
|
||||
|
||||
db = sql_db.db_connect('template1')
|
||||
|
|
|
@ -54,7 +54,6 @@ psycopg2.extensions.register_type(psycopg2.extensions.new_type((700, 701, 1700,)
|
|||
|
||||
import tools
|
||||
from tools.func import wraps, frame_codeinfo
|
||||
from netsvc import Agent
|
||||
from datetime import datetime as mdt
|
||||
from datetime import timedelta
|
||||
import threading
|
||||
|
@ -382,8 +381,8 @@ def db_connect(db_name):
|
|||
return Connection(_Pool, db_name)
|
||||
|
||||
def close_db(db_name):
|
||||
""" You might want to call openerp.netsvc.Agent.cancel(db_name) along this function."""
|
||||
_Pool.close_all(dsn(db_name))
|
||||
Agent.cancel(db_name)
|
||||
tools.cache.clean_caches_for_db(db_name)
|
||||
ct = currentThread()
|
||||
if hasattr(ct, 'dbname'):
|
||||
|
|
|
@ -27,6 +27,7 @@ import itertools
|
|||
import locale
|
||||
import os
|
||||
import openerp.pooler as pooler
|
||||
import openerp.sql_db as sql_db
|
||||
import re
|
||||
import logging
|
||||
import tarfile
|
||||
|
@ -160,7 +161,7 @@ class GettextAlias(object):
|
|||
# find current DB based on thread/worker db name (see netsvc)
|
||||
db_name = getattr(threading.currentThread(), 'dbname', None)
|
||||
if db_name:
|
||||
return pooler.get_db_only(db_name)
|
||||
return sql_db.db_connect(db_name)
|
||||
|
||||
def _get_cr(self, frame):
|
||||
is_new_cr = False
|
||||
|
|
Loading…
Reference in New Issue