Browse Source

Winners don't do drugs

Ask Solem 13 years ago
parent
commit
056e6db304
2 changed files with 19 additions and 15 deletions
  1. 12 15
      celery/app/defaults.py
  2. 7 0
      celery/tests/test_app/test_app_defaults.py

+ 12 - 15
celery/app/defaults.py

@@ -239,20 +239,17 @@ def find_deprecated_settings(source):
 def find(name, namespace="celery"):
     # - Try specified namespace first.
     namespace = namespace.upper()
-    for key, value in NAMESPACES[namespace].iteritems():
-        if key.lower() == name.lower():
-            return namespace, key, value
-
-    # - Try all the other namespaces.
-    for ns, keys in NAMESPACES.iteritems():
-        if isinstance(keys, dict):
-            if ns != namespace:
-                for key, value in keys.iteritems():
-                    if key.lower() == name.lower():
-                        return ns, key, value
-        else:
-            if ns.lower() == name.lower():
-                return None, key, value
-
+    try:
+        return namespace, name.upper(), NAMESPACES[namespace][name.upper()]
+    except KeyError:
+        # - Try all the other namespaces.
+        for ns, keys in NAMESPACES.iteritems():
+            if ns.upper() == name.upper():
+                return None, ns, keys
+            elif isinstance(keys, dict):
+                try:
+                    return ns, name.upper(), keys[name.upper()]
+                except KeyError:
+                    pass
     # - See if name is a qualname last.
     return None, name.upper(), DEFAULTS[name.upper()]

+ 7 - 0
celery/tests/test_app/test_app_defaults.py

@@ -31,6 +31,13 @@ class test_defaults(Case):
         with sys_platform("java 1.6.51"):
             self.assertEqual(self.defaults.DEFAULT_POOL, "threads")
 
+    def test_find(self):
+        find = self.defaults.find
+
+        self.assertEqual(find("server_email")[2].default, "celery@localhost")
+        self.assertEqual(find("default_queue")[2].default, "celery")
+        self.assertEqual(find("celery_default_exchange")[2], "celery")
+
     @property
     def defaults(self):
         return import_module("celery.app.defaults")