|  | @@ -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
 |