AdaptedList -> SameETypeList
*NO BW COMPAT*, benefit from cw 3.6 releasing of folder,file and blog
which use it to get update at the same time.
CMHN and PEGASE will need update (but won't go to 3.6 without update,
so seem fine).
"""
:organization: Logilab
:copyright: 2001-2010 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