1234567891011121314151617181920212223242526272829303132333435363738 |
- import imp
- from django.conf import settings
- from django.core import exceptions
- def autodiscover():
- """Include tasks for all applications in settings.INSTALLED_APPS."""
- return filter(None, [tasks_for_app(app)
- 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):
- """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:
- return None
- try:
- imp.find_module(related_name, app_path)
- except ImportError:
- return None
- return handler(app_path, app_basename)
|