import urllib2, sys, os.path, imp

class AnyMethodRequest(urllib2.Request):
    def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=None, method=None):
        self.method = method and method.upper() or None
        urllib2.Request.__init__(self, url, data, headers, origin_req_host, unverifiable)

    def get_method(self):
        if not self.method is None:
            return self.method
        elif self.has_data():
            return "POST"
        else:
            return "GET"

def get_norm_sys_path():
    """
    Returns a normalised path that can be used for PYTHONPATH to recreate the
    path used for this invocation. 
    """

    sys_path = sys.path[:]

    # Find the path to the first package containing the settings module.
    # Once we have it, normalise it and add it to our sys_path if it isn't
    # already there.
    project_path = imp.find_module(os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0])[1]
    sys_path.insert(0, os.path.join(project_path, '..'))

    sys_path = [os.path.normpath(p) for p in sys_path if p != '']

    # Remove duplicates. This is O(n^2), but efficiency isn't too much of an
    # issue when n is small.
    sys_path = [p for i,p in enumerate(sys_path) if p not in sys_path[:i]]

    return sys_path
import urllib2, sys, os.path, imp

class AnyMethodRequest(urllib2.Request):
    def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=None, method=None):
        self.method = method and method.upper() or None
        urllib2.Request.__init__(self, url, data, headers, origin_req_host, unverifiable)

    def get_method(self):
        if not self.method is None:
            return self.method
        elif self.has_data():
            return "POST"
        else:
            return "GET"

def get_norm_sys_path():
    """
    Returns a normalised path that can be used for PYTHONPATH to recreate the
    path used for this invocation. 
    """

    sys_path = sys.path[:]

    # Find the path to the first package containing the settings module.
    # Once we have it, normalise it and add it to our sys_path if it isn't
    # already there.
    try:    
        project_path = imp.find_module(os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0])[1]
    except ImportError:
        project_path = imp.find_module('settings')[1]
    sys_path.insert(0, os.path.join(project_path, '..'))

    sys_path = [os.path.normpath(p) for p in sys_path if p != '']

    # Remove duplicates. This is O(n^2), but efficiency isn't too much of an
    # issue when n is small.
    sys_path = [p for i,p in enumerate(sys_path) if p not in sys_path[:i]]

    return sys_path
Make create_crontab fall back to default settings search before explicitly searching for DJANGO_SETTINGS_MODULE
Make create_crontab fall back to default settings search before explicitly searching for DJANGO_SETTINGS_MODULE

  import urllib2, sys, os.path, imp
  
  class AnyMethodRequest(urllib2.Request):
      def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=None, method=None):
          self.method = method and method.upper() or None
          urllib2.Request.__init__(self, url, data, headers, origin_req_host, unverifiable)
  
      def get_method(self):
          if not self.method is None:
              return self.method
          elif self.has_data():
              return "POST"
          else:
              return "GET"
  
  def get_norm_sys_path():
      """
      Returns a normalised path that can be used for PYTHONPATH to recreate the
      path used for this invocation. 
      """
  
      sys_path = sys.path[:]
  
      # Find the path to the first package containing the settings module.
      # Once we have it, normalise it and add it to our sys_path if it isn't
      # already there.
+     try:    
-     project_path = imp.find_module(os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0])[1]
+         project_path = imp.find_module(os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0])[1]
+     except ImportError:
+         project_path = imp.find_module('settings')[1]
      sys_path.insert(0, os.path.join(project_path, '..'))
  
      sys_path = [os.path.normpath(p) for p in sys_path if p != '']
  
      # Remove duplicates. This is O(n^2), but efficiency isn't too much of an
      # issue when n is small.
      sys_path = [p for i,p in enumerate(sys_path) if p not in sys_path[:i]]
  
      return sys_path
Make create_crontab fall back to default settings search before explicitly searching for DJANGO_SETTINGS_MODULE
## Code Before:
import urllib2, sys, os.path, imp

class AnyMethodRequest(urllib2.Request):
    def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=None, method=None):
        self.method = method and method.upper() or None
        urllib2.Request.__init__(self, url, data, headers, origin_req_host, unverifiable)

    def get_method(self):
        if not self.method is None:
            return self.method
        elif self.has_data():
            return "POST"
        else:
            return "GET"

def get_norm_sys_path():
    """
    Returns a normalised path that can be used for PYTHONPATH to recreate the
    path used for this invocation. 
    """

    sys_path = sys.path[:]

    # Find the path to the first package containing the settings module.
    # Once we have it, normalise it and add it to our sys_path if it isn't
    # already there.
    project_path = imp.find_module(os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0])[1]
    sys_path.insert(0, os.path.join(project_path, '..'))

    sys_path = [os.path.normpath(p) for p in sys_path if p != '']

    # Remove duplicates. This is O(n^2), but efficiency isn't too much of an
    # issue when n is small.
    sys_path = [p for i,p in enumerate(sys_path) if p not in sys_path[:i]]

    return sys_path
## Instruction:
Make create_crontab fall back to default settings search before explicitly searching for DJANGO_SETTINGS_MODULE
## Code After:
import urllib2, sys, os.path, imp

class AnyMethodRequest(urllib2.Request):
    def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=None, method=None):
        self.method = method and method.upper() or None
        urllib2.Request.__init__(self, url, data, headers, origin_req_host, unverifiable)

    def get_method(self):
        if not self.method is None:
            return self.method
        elif self.has_data():
            return "POST"
        else:
            return "GET"

def get_norm_sys_path():
    """
    Returns a normalised path that can be used for PYTHONPATH to recreate the
    path used for this invocation. 
    """

    sys_path = sys.path[:]

    # Find the path to the first package containing the settings module.
    # Once we have it, normalise it and add it to our sys_path if it isn't
    # already there.
    try:    
        project_path = imp.find_module(os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0])[1]
    except ImportError:
        project_path = imp.find_module('settings')[1]
    sys_path.insert(0, os.path.join(project_path, '..'))

    sys_path = [os.path.normpath(p) for p in sys_path if p != '']

    # Remove duplicates. This is O(n^2), but efficiency isn't too much of an
    # issue when n is small.
    sys_path = [p for i,p in enumerate(sys_path) if p not in sys_path[:i]]

    return sys_path