Commit 8c25d8fc authored by Tim Graham's avatar Tim Graham
Browse files

[1.10.x] Refs #22384 -- Readded RegexURLResolver.reverse().

It was removed in 785cc71d only because
it was untested and unused in Django itself, however, some third-party
apps use it.

Backport of 4e400dcb from master
parent 0f23bceb
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -323,6 +323,9 @@ class RegexURLResolver(LocaleRegexProvider):
            callback = getattr(urls, 'handler%s' % view_type)
        return get_callable(callback), {}

    def reverse(self, lookup_view, *args, **kwargs):
        return self._reverse_with_prefix(lookup_view, '', *args, **kwargs)

    def _reverse_with_prefix(self, lookup_view, _prefix, *args, **kwargs):
        if args and kwargs:
            raise ValueError("Don't mix *args and **kwargs in call to reverse()!")
+6 −0
Original line number Diff line number Diff line
@@ -364,6 +364,12 @@ class ResolverTests(unittest.TestCase):
        except TypeError:
            self.fail('Failed to coerce lazy object to text')

    def test_resolver_reverse(self):
        resolver = get_resolver('urlpatterns_reverse.named_urls')
        self.assertEqual(resolver.reverse('named-url1'), '')
        self.assertEqual(resolver.reverse('named-url2', 'arg'), 'extra/arg/')
        self.assertEqual(resolver.reverse('named-url2', extra='arg'), 'extra/arg/')

    def test_non_regex(self):
        """
        Verifies that we raise a Resolver404 if what we are resolving doesn't