Django

Code

Changeset 9099

Show
Ignore:
Timestamp:
09/30/08 00:52:35 (3 months ago)
Author:
mtredinnick
Message:

Fixed another case of reverse URL resolving that wasn't working.

This is a similar situation to that fixed in r9087. We weren't merging
multiple levels of include() calls together correctly.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/urlresolvers.py

    r9087 r9099  
    159159                if isinstance(pattern, RegexURLResolver): 
    160160                    parent = normalize(pattern.regex.pattern) 
    161                     for name, (matches, pat) in pattern.reverse_dict.iteritems()
    162                         new_matches = [] 
    163                         for piece, p_args in parent: 
    164                             new_matches.extend([(piece + suffix, p_args + args) 
    165                                     for (suffix, args) in matches]) 
    166                         self._reverse_dict.appendlist(name, (new_matches, p_pattern + pat)) 
     161                    for name in pattern.reverse_dict
     162                        for matches, pat in pattern.reverse_dict.getlist(name): 
     163                            new_matches = [] 
     164                            for piece, p_args in parent: 
     165                                new_matches.extend([(piece + suffix, p_args + args) for (suffix, args) in matches]) 
     166                            self._reverse_dict.appendlist(name, (new_matches, p_pattern + pat)) 
    167167                else: 
    168168                    bits = normalize(p_pattern) 
  • django/trunk/tests/regressiontests/urlpatterns_reverse/extra_urls.py

    r8763 r9099  
    99    url(r'^e-places/(\d+)/$', empty_view, name='extra-places'), 
    1010    url(r'^e-people/(?P<name>\w+)/$', empty_view, name="extra-people"), 
     11    url('', include('regressiontests.urlpatterns_reverse.included_urls2')), 
     12    url(r'^prefix/(?P<prefix>\w+)/', include('regressiontests.urlpatterns_reverse.included_urls2')), 
    1113) 
  • django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py

    r9087 r9099  
    6666    ('extra-people', '/e-people/fred/', ['fred'], {}), 
    6767    ('extra-people', '/e-people/fred/', [], {'name': 'fred'}), 
     68    ('part', '/part/one/', [], {'value': 'one'}), 
     69    ('part', '/prefix/xx/part/one/', [], {'value': 'one', 'prefix': 'xx'}), 
     70    ('part2', '/part2/one/', [], {'value': 'one'}), 
     71    ('part2', '/part2/', [], {}), 
     72    ('part2', '/prefix/xx/part2/one/', [], {'value': 'one', 'prefix': 'xx'}), 
     73    ('part2', '/prefix/xx/part2/', [], {'prefix': 'xx'}), 
    6874 
    6975    # Regression for #9038