Deprecate and forward convenience imports in reviewboard.integrations.

Review Request #10513 — Created April 4, 2019 and updated

Review Board

reviewboard.integrations provided convenience imports for
get_integration_manager() and the base Integration class. These
ended up being a bad idea, because the imports needed for these ended up
interfering with Django app initialization.

Now, both of these forward on to the versions in
reviewboard.integrations.base, showing a deprecation warning on use.
This will remain for Review Board 4.0, and are planned to be removed in

To handle the deprecation of the Integration class, we use a metaclass
that will handle the construction of any subclasses. It will reassign
the parent to reviewboard.integrations.base.Integration. This
shouldn't break any subclasses, but could cause problems if anything is
trying to directly compare against the version in
reviewboard.integrations. As this is unlikely, and fixing this would
complicate things quite a bit, we won't be addressing it unless a
problem comes up somewhere.

Unit tests pass on Django 1.6 and 1.11 (with other in-progress changes).

Verified that older integrations were loading correctly on both versions
of Django.

Deprecate and forward convenience imports in reviewboard.integrations.
Checks run (2 succeeded)
flake8 passed.
JSHint passed.
  1. Ship It!