@@ -143,6 +143,8 @@ def __init__(self, regex, urlconf_name, default_kwargs=None):
143
143
# urlconf_name is a string representing the module containing urlconfs.
144
144
self .regex = re .compile (regex , re .UNICODE )
145
145
self .urlconf_name = urlconf_name
146
+ if not isinstance (urlconf_name , basestring ):
147
+ self ._urlconf_module = self .urlconf_name
146
148
self .callback = None
147
149
self .default_kwargs = default_kwargs or {}
148
150
self ._reverse_dict = MultiValueDict ()
@@ -151,8 +153,8 @@ def __repr__(self):
151
153
return '<%s %s %s>' % (self .__class__ .__name__ , self .urlconf_name , self .regex .pattern )
152
154
153
155
def _get_reverse_dict (self ):
154
- if not self ._reverse_dict and hasattr ( self . urlconf_module , 'urlpatterns' ) :
155
- for pattern in reversed (self .urlconf_module . urlpatterns ):
156
+ if not self ._reverse_dict :
157
+ for pattern in reversed (self .url_patterns ):
156
158
p_pattern = pattern .regex .pattern
157
159
if p_pattern .startswith ('^' ):
158
160
p_pattern = p_pattern [1 :]
@@ -176,7 +178,7 @@ def resolve(self, path):
176
178
match = self .regex .search (path )
177
179
if match :
178
180
new_path = path [match .end ():]
179
- for pattern in self .urlconf_module . urlpatterns :
181
+ for pattern in self .url_patterns :
180
182
try :
181
183
sub_match = pattern .resolve (new_path )
182
184
except Resolver404 , e :
@@ -200,7 +202,13 @@ def _get_urlconf_module(self):
200
202
urlconf_module = property (_get_urlconf_module )
201
203
202
204
def _get_url_patterns (self ):
203
- return self .urlconf_module .urlpatterns
205
+ patterns = getattr (self .urlconf_module , "urlpatterns" , self .urlconf_module )
206
+ try :
207
+ iter (patterns )
208
+ except TypeError :
209
+ raise ImproperlyConfigured ("The included urlconf %s doesn't have any"
210
+ "patterns in it" % self .urlconf_name )
211
+ return patterns
204
212
url_patterns = property (_get_url_patterns )
205
213
206
214
def _resolve_special (self , view_type ):
0 commit comments