• 
      

    Improve options and compatibility when initializing Review Board.

    Review Request #10536 — Created April 17, 2019 and submitted — Latest diff uploaded

    Information

    Review Board
    release-4.0.x

    Reviewers

    This change aims to improve the initialization of Review Board (through
    the initialize() method), to give callers more control over that
    process, and to reduce the work needed by callers.

    initialize() now has a few new arguments for controlling the
    initialization process. Extensions can now be turned off for callers
    that don't need them, as can some custom template support ({% url %}
    tag on Django 1.6 and some template serial generation for caching).
    Logging can also be turned off, in case the caller has set things up
    already.

    Callers no longer need to set the DJANGO_SETTINGS_MODULE environment
    variable first. If not already set, initialize() will set this to
    reviewboard.settings automatically.

    We also already had some code that attempted to initialize Django (using
    django.setup()), but it was doing this a bit later than we wanted. We
    now try to do this earlier, before we import anything from Django. We
    also only do it now if we've detected that Django isn't yet set up.

    rbssh has been updated to take advantage of these changes as well,
    removing all extension loading, template serial generation, and unwanted
    logging setup (which is being overridden anyway) to minimize startup
    time.

    Unit tests pass on Python 2.7/Django 1.6 and Python 3.7/Django 1.11.

    Manually tested rbssh with and without debug logging.

    Commits

    Files