closes #601987
1) sqlutils.restore_from_file have to use its confirm argument when
a command fail, to propose to continue there (this can't be handled
by the caller)
2) source.restore method hence needs to take this confirmation callback
as argument
3) properly fix places where 'drop' was given instead of 'confirm'
"""
:organization: Logilab
:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
from AccessControl import getSecurityManager
from cubicweb.dbapi import connect, Connection, Cursor
from cubicweb.common.utils import ResultSet, ResultSetIterator, ResultSetRow, Entity
Connection.__allow_access_to_unprotected_subobjects__ = 1
Cursor.__allow_access_to_unprotected_subobjects__ = 1
ResultSet.__allow_access_to_unprotected_subobjects__ = 1
ResultSetIterator.__allow_access_to_unprotected_subobjects__ = 1
ResultSetRow.__allow_access_to_unprotected_subobjects__ = 1
Entity.__allow_access_to_unprotected_subobjects__ = 1
CNX_CACHE = {}
def get_connection(context, user=None, password=None,
host=None, database=None, group='cubicweb'):
"""get a connection on an cubicweb server"""
request = context.REQUEST
zope_user = getSecurityManager().getUser()
if user is None:
user = zope_user.getId()
key = (user, host, database)
try:
return CNX_CACHE[key]
except KeyError:
if password is None:
password = zope_user._getPassword()
cnx = connect(user, password, host, database, group)
CNX_CACHE[key] = cnx
return cnx