changeset 6167:9452b5a8e06f

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.
author Mads Kiilerich <madski@unity3d.com>
date Tue, 06 Sep 2016 00:51:18 +0200
parents e67b9f4b9d95
children f770722cdb6c
files kallithea/lib/celerypylons/loader.py
diffstat 1 files changed, 26 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- 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)