1 | 338a339,367
|
---|
2 | >
|
---|
3 | > # CWB: This is a hack to get namespaced URLs to reverse when the base
|
---|
4 | > # has named parameters (may work for positional, but not tested at all).
|
---|
5 | > pattern = prefix
|
---|
6 | > possibility = normalize(pattern) # The magical regex reverse function!
|
---|
7 | > # Below copied from _populate above and slightly altered
|
---|
8 | > for result, params in possibility:
|
---|
9 | > copy_args = [v for v in args]
|
---|
10 | > copy_kwargs = kwargs.copy()
|
---|
11 | > if args:
|
---|
12 | > if len(args) < len(params):
|
---|
13 | > continue
|
---|
14 | > # Pop arguments to ensure the right number are passed on to the
|
---|
15 | > # resolver.
|
---|
16 | > unicode_args = [force_unicode(copy_args.pop(0)) for v in params]
|
---|
17 | > candidate = result % dict(zip(params, unicode_args))
|
---|
18 | > else:
|
---|
19 | > if not set(params).issubset(set(kwargs.keys())):
|
---|
20 | > continue
|
---|
21 | > # Pop arguments to ensure the right number are passed on to the
|
---|
22 | > # resolver.
|
---|
23 | > unicode_kwargs = dict([(k, force_unicode(copy_kwargs.pop(k))) for k in params])
|
---|
24 | > candidate = result % unicode_kwargs
|
---|
25 | > if re.search(u'^%s' % pattern, candidate, re.UNICODE):
|
---|
26 | > prefix = candidate
|
---|
27 | > else:
|
---|
28 | > raise NoReverseMatch(
|
---|
29 | > "Reverse for '%s' with arguments '%s' and keyword arguments\
|
---|
30 | > '%s' not found." % (pattern, args, kwargs))
|
---|
31 | 341c370
|
---|
32 | < *args, **kwargs)))
|
---|
33 | ---
|
---|
34 | > *copy_args, **copy_kwargs)))
|
---|