Added an options argument to pyramid.paste.get_appsettings, just like get_app, that can be used to get the settings when interpolation is used in the config file.
| | |
| | | |
| | | .. autofunction:: get_app(config_uri, name=None, options=None) |
| | | |
| | | .. autofunction:: get_appsettings(config_uri, name=None) |
| | | .. autofunction:: get_appsettings(config_uri, name=None, options=None) |
| | | |
| | | .. autofunction:: setup_logging(config_uri) |
| | |
| | | path, section = _getpathsec(config_uri, name) |
| | | config_name = 'config:%s' % path |
| | | here_dir = os.getcwd() |
| | | if options: |
| | | kw = {'global_conf': options} |
| | | else: |
| | | kw = {} |
| | | |
| | | app = loadapp(config_name, name=section, relative_to=here_dir, **kw) |
| | | app = loadapp(config_name, name=section, relative_to=here_dir, global_conf=options) |
| | | |
| | | return app |
| | | |
| | | def get_appsettings(config_uri, name=None, appconfig=appconfig): |
| | | def get_appsettings(config_uri, name=None, options=None, appconfig=appconfig): |
| | | """ Return a dictionary representing the key/value pairs in an ``app`` |
| | | section within the file represented by ``config_uri``. |
| | | |
| | | ``options``, if passed, should be a dictionary used as variable assignments |
| | | like ``{'http_port': 8080}``. This is useful if e.g. ``%(http_port)s`` is |
| | | used in the config file. |
| | | |
| | | If the ``name`` is None, this will attempt to parse the name from |
| | | the ``config_uri`` string expecting the format ``inifile#name``. |
| | |
| | | path, section = _getpathsec(config_uri, name) |
| | | config_name = 'config:%s' % path |
| | | here_dir = os.getcwd() |
| | | return appconfig(config_name, name=section, relative_to=here_dir) |
| | | return appconfig(config_name, name=section, relative_to=here_dir, global_conf=options) |
| | | |
| | | def setup_logging(config_uri, fileConfig=fileConfig, |
| | | configparser=configparser): |
| | |
| | | self.assertEqual(result, app) |
| | | |
| | | class Test_get_appsettings(unittest.TestCase): |
| | | def _callFUT(self, config_file, section_name, appconfig): |
| | | def _callFUT(self, config_file, section_name, options=None, appconfig=None): |
| | | from pyramid.paster import get_appsettings |
| | | return get_appsettings(config_file, section_name, appconfig) |
| | | return get_appsettings(config_file, section_name, options, appconfig) |
| | | |
| | | def test_it(self): |
| | | values = {'a':1} |
| | | appconfig = DummyLoadWSGI(values) |
| | | result = self._callFUT('/foo/bar/myapp.ini', 'myapp', appconfig) |
| | | result = self._callFUT('/foo/bar/myapp.ini', 'myapp', |
| | | appconfig=appconfig) |
| | | self.assertEqual(appconfig.config_name, 'config:/foo/bar/myapp.ini') |
| | | self.assertEqual(appconfig.section_name, 'myapp') |
| | | self.assertEqual(appconfig.relative_to, os.getcwd()) |
| | |
| | | def test_it_with_hash(self): |
| | | values = {'a':1} |
| | | appconfig = DummyLoadWSGI(values) |
| | | result = self._callFUT('/foo/bar/myapp.ini#myapp', None, appconfig) |
| | | result = self._callFUT('/foo/bar/myapp.ini#myapp', None, |
| | | appconfig=appconfig) |
| | | self.assertEqual(appconfig.config_name, 'config:/foo/bar/myapp.ini') |
| | | self.assertEqual(appconfig.section_name, 'myapp') |
| | | self.assertEqual(appconfig.relative_to, os.getcwd()) |
| | |
| | | def test_it_with_hash_and_name_override(self): |
| | | values = {'a':1} |
| | | appconfig = DummyLoadWSGI(values) |
| | | result = self._callFUT('/foo/bar/myapp.ini#myapp', 'yourapp', appconfig) |
| | | result = self._callFUT('/foo/bar/myapp.ini#myapp', 'yourapp', |
| | | appconfig=appconfig) |
| | | self.assertEqual(appconfig.config_name, 'config:/foo/bar/myapp.ini') |
| | | self.assertEqual(appconfig.section_name, 'yourapp') |
| | | self.assertEqual(appconfig.relative_to, os.getcwd()) |
| | |
| | | |
| | | class DummyConfigParserModule(object): |
| | | ConfigParser = DummyConfigParser |
| | | |
| | | |
| | | |