Fixed #4129 -- Pass any prefix setting into url(...) constructions so that

prefixes work with the new syntax and strings for function names.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@5086 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-04-26 11:17:19 +00:00
parent 21d9387cea
commit f85f1d077a
2 changed files with 12 additions and 3 deletions

View File

@ -11,9 +11,10 @@ def patterns(prefix, *args):
pattern_list = [] pattern_list = []
for t in args: for t in args:
if isinstance(t, (list, tuple)): if isinstance(t, (list, tuple)):
pattern_list.append(url(prefix=prefix, *t)) t = url(prefix=prefix, *t)
else: elif isinstance(t, RegexURLPattern):
pattern_list.append(t) t.add_prefix(prefix)
pattern_list.append(t)
return pattern_list return pattern_list
def url(regex, view, kwargs=None, name=None, prefix=''): def url(regex, view, kwargs=None, name=None, prefix=''):

View File

@ -102,6 +102,14 @@ class RegexURLPattern(object):
self.default_args = default_args or {} self.default_args = default_args or {}
self.name = name self.name = name
def add_prefix(self, prefix):
"""
Adds the prefix string to a string-based callback.
"""
if not prefix or not hasattr(self, '_callback_str'):
return
self._callback_str = prefix + '.' + self._callback_str
def resolve(self, path): def resolve(self, path):
match = self.regex.search(path) match = self.regex.search(path)
if match: if match: