diff -r 058bb3dc685f -r 0b59724cb3f2 repoapi.py --- a/repoapi.py Mon Jan 04 18:40:30 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -# copyright 2013-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. -# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr -# -# This file is part of CubicWeb. -# -# CubicWeb is free software: you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation, either version 2.1 of the License, or (at your option) -# any later version. -# -# CubicWeb is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License along -# with CubicWeb. If not, see . -"""Official API to access the content of a repository -""" -from warnings import warn - -from six import add_metaclass - -from logilab.common.deprecation import class_deprecated - -from cubicweb.utils import parse_repo_uri -from cubicweb import AuthenticationError -from cubicweb.server.session import Connection - - -### public API ###################################################### - -def get_repository(uri=None, config=None, vreg=None): - """get a repository for the given URI or config/vregistry (in case we're - loading the repository for a client, eg web server, configuration). - - The returned repository may be an in-memory repository or a proxy object - using a specific RPC method, depending on the given URI. - """ - if uri is not None: - warn('[3.22] get_repository only wants a config') - - assert config is not None, 'get_repository(config=config)' - return config.repository(vreg) - -def connect(repo, login, **kwargs): - """Take credential and return associated Connection. - - raise AuthenticationError if the credential are invalid.""" - sessionid = repo.connect(login, **kwargs) - session = repo._get_session(sessionid) - # XXX the autoclose_session should probably be handle on the session directly - # this is something to consider once we have proper server side Connection. - return Connection(session) - -def anonymous_cnx(repo): - """return a Connection for Anonymous user. - - raises an AuthenticationError if anonymous usage is not allowed - """ - anoninfo = getattr(repo.config, 'anonymous_user', lambda: None)() - if anoninfo is None: # no anonymous user - raise AuthenticationError('anonymous access is not authorized') - anon_login, anon_password = anoninfo - # use vreg's repository cache - return connect(repo, anon_login, password=anon_password) - - -@add_metaclass(class_deprecated) -class ClientConnection(Connection): - __deprecation_warning__ = '[3.20] %(cls)s is deprecated, use Connection instead'