# HG changeset patch # User Mads Kiilerich # Date 1473115878 -7200 # Node ID 9452b5a8e06f436db32e9a20adc76c9f85b39223 # Parent e67b9f4b9d95600f7883bca4f7ce8ea176e3ed75 celery: refactor config loader * implement __contains__ - is needed by Celery 3 * less exception juggling - follow the flow and let __getitem__ be simple and low level TODO: Drop the name mangling and just use the real names for the settings. diff -r e67b9f4b9d95 -r 9452b5a8e06f kallithea/lib/celerypylons/loader.py --- a/kallithea/lib/celerypylons/loader.py Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/lib/celerypylons/loader.py Tue Sep 06 00:51:18 2016 +0200 @@ -3,6 +3,7 @@ from celery.loaders.base import BaseLoader from pylons import config +# TODO: drop this mangling and just use a separate celery config section to_pylons = lambda x: x.replace('_', '.').lower() to_celery = lambda x: x.replace('.', '_').upper() @@ -12,29 +13,35 @@ class PylonsSettingsProxy(object): """Pylons Settings Proxy - Proxies settings from pylons.config + Make settings from pylons.config appear the way Celery expects them. + """ + + def __getattr__(self, key): + try: + return self[key] + except KeyError: + raise AttributeError(key) - """ - def __getattr__(self, key): + def get(self, key, default=None): + try: + return self[key] + except KeyError: + return default + + def __getitem__(self, key): + pylons_key = to_pylons(key) + value = config[pylons_key] + if key in LIST_PARAMS: + return value.split() + return self.type_converter(value) + + def __contains__(self, key): pylons_key = to_pylons(key) try: - value = config[pylons_key] - if key in LIST_PARAMS:return value.split() - return self.type_converter(value) + config[pylons_key] except KeyError: - raise AttributeError(pylons_key) - - def get(self, key): - try: - return self.__getattr__(key) - except AttributeError: - return None - - def __getitem__(self, key): - try: - return self.__getattr__(key) - except AttributeError: - raise KeyError() + return False + return True def __setattr__(self, key, value): pylons_key = to_pylons(key)