Changeset - 9452b5a8e06f
[Not reviewed]
default
0 1 0
Mads Kiilerich - 9 years ago 2016-09-06 00:51:18
madski@unity3d.com
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.
1 file changed with 26 insertions and 19 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/celerypylons/loader.py
Show inline comments
 
@@ -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 @@ LIST_PARAMS = """CELERY_IMPORTS ADMINS R
 
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)
0 comments (0 inline, 0 general)