• 
      

    Fix rendering the admin sidebar when in an extension's database views.

    Review Request #11497 — Created March 1, 2021 and submitted — Latest diff uploaded

    Information

    Review Board
    release-4.0.x

    Reviewers

    When accessing an extension's database views (such as Review Bot's
    Tools entries), URL lookups for pages in Review Board's main database
    pages would fail to resolve, breaking rendering of the page.

    This happens due to the usage of the current_app support in URL
    rendering. This is a method that's used to limit which URLs may be
    matched when resolving a URL. If request.current_app is set in a view
    (which is the case for any given AdminSite), then any calls to
    {% url %} will pass it in to reverse().

    In this particular case, reversing admin:XYZ with a
    current_app='test' would match only in test's admin:... URLs, and
    would fail to find an admin:XYZ in some other app.

    The solution in our case is to precompute the URLs before rendering the
    template, letting us bypass the current_app mechanism. This is being
    done in the {% admin_sidebar %} template tag, which handles the
    rendering.

    Accessed the Review Bot database views. The pages rendered correctly,
    and all sidebar links worked.

    Tested the main admin UI pages. They also worked correctly.

    Commits

    Files