• 
      

    Improve options and compatibility when initializing Review Board.

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

    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.

    Summary ID
    Improve options and compatibility when initializing Review Board.
    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.
    6d0c1c7c54019fa340cb1fbedf0a747788b5129c
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-4.0.x (8360e62)