# HG changeset patch # User Aurelien Campeas # Date 1404916334 -7200 # Node ID 3914388b2d0f32767c6dd7f47df4077b47981c1c # Parent c316e0049b9c0458e76ae6b00e429415fd838c61 [repoapi, cwconfig] give a convenience method to get a repository from a config This is a very common need. The private repoapi._get_inmemory_repo becomes config.repository(...) diff -r c316e0049b9c -r 3914388b2d0f cwconfig.py --- a/cwconfig.py Wed Jul 09 15:50:23 2014 +0200 +++ b/cwconfig.py Wed Jul 09 16:32:14 2014 +0200 @@ -994,6 +994,13 @@ rtdir = abspath(os.environ.get('CW_RUNTIME_DIR', default)) return join(rtdir, '%s-%s.pid' % (self.appid, self.name)) + # config -> repository + + def repository(self, vreg=None): + from cubicweb.server.repository import Repository + from cubicweb.server.utils import TasksManager + return Repository(self, TasksManager(), vreg=vreg) + # instance methods used to get instance specific resources ############# def __init__(self, appid, debugmode=False, creating=False): diff -r c316e0049b9c -r 3914388b2d0f devtools/__init__.py --- a/devtools/__init__.py Wed Jul 09 15:50:23 2014 +0200 +++ b/devtools/__init__.py Wed Jul 09 16:32:14 2014 +0200 @@ -399,9 +399,8 @@ def _new_repo(self, config): """Factory method to create a new Repository Instance""" - from cubicweb.repoapi import _get_inmemory_repo config._cubes = None - repo = _get_inmemory_repo(config) + repo = config.repository() # extending Repository class repo._has_started = False repo._needs_refresh = False diff -r c316e0049b9c -r 3914388b2d0f repoapi.py --- a/repoapi.py Wed Jul 09 15:50:23 2014 +0200 +++ b/repoapi.py Wed Jul 09 16:32:14 2014 +0200 @@ -17,21 +17,14 @@ # with CubicWeb. If not, see . """Official API to access the content of a repository """ +from warnings import warn from logilab.common.deprecation import class_deprecated from cubicweb.utils import parse_repo_uri -from cubicweb import ConnectionError, AuthenticationError +from cubicweb import AuthenticationError from cubicweb.server.session import Connection -### private function for specific method ############################ - -def _get_inmemory_repo(config, vreg=None): - from cubicweb.server.repository import Repository - from cubicweb.server.utils import TasksManager - return Repository(config, TasksManager(), vreg=vreg) - - ### public API ###################################################### def get_repository(uri=None, config=None, vreg=None): @@ -41,16 +34,11 @@ 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 None: - return _get_inmemory_repo(config, vreg) - - protocol, hostport, appid = parse_repo_uri(uri) + if uri is not None: + warn('[3.22] get_repository only wants a config') - if protocol == 'inmemory': - # me may have been called with a dummy 'inmemory://' uri ... - return _get_inmemory_repo(config, vreg) - - raise ConnectionError('unknown protocol: `%s`' % protocol) + assert config is not None, 'get_repository(config=config)' + return config.repository(vreg) def connect(repo, login, **kwargs): """Take credential and return associated Connection. diff -r c316e0049b9c -r 3914388b2d0f web/webconfig.py --- a/web/webconfig.py Wed Jul 09 15:50:23 2014 +0200 +++ b/web/webconfig.py Wed Jul 09 16:32:14 2014 +0200 @@ -280,18 +280,6 @@ continue yield key, pdef - # don't use @cached: we want to be able to disable it while this must still - # be cached - def repository(self, vreg=None): - """return the instance's repository object""" - try: - return self.__repo - except AttributeError: - from cubicweb.repoapi import get_repository - repo = get_repository(config=self, vreg=vreg) - self.__repo = repo - return repo - def vc_config(self): return self.repository().get_versions()