Browse Source

Make autodiscover() work with zipped eggs.

Ask Solem 16 years ago
parent
commit
29c6860239
1 changed files with 9 additions and 22 deletions
  1. 9 22
      celery/discovery.py

+ 9 - 22
celery/discovery.py

@@ -1,40 +1,27 @@
-import imp
 from django.conf import settings
-from django.core import exceptions
 
-__all__ = ["autodiscover", "tasks_for_app", "find_related_module"]
+__all__ = ["autodiscover", "find_related_module"]
 
 
 def autodiscover():
     """Include tasks for all applications in settings.INSTALLED_APPS."""
-    return filter(None, [tasks_for_app(app)
+    return filter(None, [find_related_module(app, "tasks")
                             for app in settings.INSTALLED_APPS])
 
 
-def tasks_for_app(app):
-    """Given an application name, imports any tasks.py file for that app."""
-
-    def found_tasks_module_handler(app_path, app_basename):
-        return __import__("%s.tasks" % app)
-
-    return find_related_module(app, "tasks", found_tasks_module_handler)
-
-
-def find_related_module(app, related_name, handler):
+def find_related_module(app, related_name):
     """Given an application name and a module name, tries to find that
     module in the application, and running handler' if it finds it.
     """
 
-    # See django.contrib.admin.autodiscover for an explanation of this code.
     try:
-        app_basename = app.split('.')[-1]
-        app_path = __import__(app, {}, {}, app_basename).__path__
-    except AttributeError:
+        module = __import__(app, {}, {}, [related_name])
+    except ImportError:
         return None
 
     try:
-        imp.find_module(related_name, app_path)
-    except ImportError:
+        related_module = getattr(module, related_name)
+    except AttributeError:
         return None
-
-    return handler(app_path, app_basename)
+   
+    return related_module