equal
deleted
inserted
replaced
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 |