web/lib/django/conf/__init__.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
    44         Called to manually configure the settings. The 'default_settings'
    44         Called to manually configure the settings. The 'default_settings'
    45         parameter sets where to retrieve any unspecified values from (its
    45         parameter sets where to retrieve any unspecified values from (its
    46         argument must support attribute access (__getattr__)).
    46         argument must support attribute access (__getattr__)).
    47         """
    47         """
    48         if self._wrapped != None:
    48         if self._wrapped != None:
    49             raise RuntimeError, 'Settings already configured.'
    49             raise RuntimeError('Settings already configured.')
    50         holder = UserSettingsHolder(default_settings)
    50         holder = UserSettingsHolder(default_settings)
    51         for name, value in options.items():
    51         for name, value in options.items():
    52             setattr(holder, name, value)
    52             setattr(holder, name, value)
    53         self._wrapped = holder
    53         self._wrapped = holder
    54 
    54 
    70         self.SETTINGS_MODULE = settings_module
    70         self.SETTINGS_MODULE = settings_module
    71 
    71 
    72         try:
    72         try:
    73             mod = importlib.import_module(self.SETTINGS_MODULE)
    73             mod = importlib.import_module(self.SETTINGS_MODULE)
    74         except ImportError, e:
    74         except ImportError, e:
    75             raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
    75             raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e))
    76 
    76 
    77         # Settings that should be converted into tuples if they're mistakenly entered
    77         # Settings that should be converted into tuples if they're mistakenly entered
    78         # as strings.
    78         # as strings.
    79         tuple_settings = ("INSTALLED_APPS", "TEMPLATE_DIRS")
    79         tuple_settings = ("INSTALLED_APPS", "TEMPLATE_DIRS")
    80 
    80 
   100                         new_installed_apps.append('%s.%s' % (app[:-2], d))
   100                         new_installed_apps.append('%s.%s' % (app[:-2], d))
   101             else:
   101             else:
   102                 new_installed_apps.append(app)
   102                 new_installed_apps.append(app)
   103         self.INSTALLED_APPS = new_installed_apps
   103         self.INSTALLED_APPS = new_installed_apps
   104 
   104 
   105         if hasattr(time, 'tzset'):
   105         if hasattr(time, 'tzset') and getattr(self, 'TIME_ZONE'):
   106             # Move the time zone info into os.environ. See ticket #2315 for why
   106             # Move the time zone info into os.environ. See ticket #2315 for why
   107             # we don't do this unconditionally (breaks Windows).
   107             # we don't do this unconditionally (breaks Windows).
   108             os.environ['TZ'] = self.TIME_ZONE
   108             os.environ['TZ'] = self.TIME_ZONE
   109             time.tzset()
   109             time.tzset()
   110 
       
   111     def get_all_members(self):
       
   112         return dir(self)
       
   113 
   110 
   114 class UserSettingsHolder(object):
   111 class UserSettingsHolder(object):
   115     """
   112     """
   116     Holder for user configured settings.
   113     Holder for user configured settings.
   117     """
   114     """
   127         self.default_settings = default_settings
   124         self.default_settings = default_settings
   128 
   125 
   129     def __getattr__(self, name):
   126     def __getattr__(self, name):
   130         return getattr(self.default_settings, name)
   127         return getattr(self.default_settings, name)
   131 
   128 
   132     def get_all_members(self):
   129     def __dir__(self):
   133         return dir(self) + dir(self.default_settings)
   130         return self.__dict__.keys() + dir(self.default_settings)
       
   131 
       
   132     # For Python < 2.6:
       
   133     __members__ = property(lambda self: self.__dir__())
   134 
   134 
   135 settings = LazySettings()
   135 settings = LazySettings()
   136 
   136