Extension Class¶
The main component of an extension is a class inheriting from
reviewboard.extensions.base.Extension
. It can optionally set
the following attributes on the class:
apps
context_processors
css_bundles
default_settings
has_admin_site
is_configurable
js_bundles
js_extensions
metadata
middleware
requirements
resources
The following are also available on an extension instance:
settings
-
class
reviewboard.extensions.base.
Extension
-
apps
A list of Django apps that the extension either provides or depends upon.
Each “app” is a Python module path that Django will use when looking for models, template tags, and more.
This does not need to include the app for the extension itself, but if the extension is grouped into separate Django apps, it can list those.
This setting is equivalent to modifying
settings.INSTALLED_APPS
in Django.
-
context_processors
A list of Django context processors, which inject variables into every rendered template. Certain third-party apps depend on context processors.
This setting is equivalent to modifying
settings.TEMPLATE_CONTEXT_PROCESSORS
in Django.
-
css_bundles
A list of custom CSS media bundles that can be used when rendering pages.
See Static Files for more information.
-
default_settings
A dictionary of default settings for the extension. These defaults are used when accessing
settings
, if the user hasn’t provided a custom value. By default, this is empty.See Default Settings for more information.
-
has_admin_site
A boolean that indicates whether a Django admin site should be generated for the extension.
If
True
, a Database link will be shown for the extension, allowing the user to inspect and modify the extension’s database entries. The default isFalse
.See Admin Site (Database Browser) for more information.
-
is_configurable
A boolean indicating whether the extension supports global configuration by a system administrator.
If
True
, a Configure link will be shown for the extension when enabled, taking them to the configuration page provided by the extension. The default isFalse
.See Configuration Pages for more information.
-
js_bundles
A list of custom JavaScript media bundles that can be used when rendering pages.
See Static Files for more information.
-
js_extensions
A list of
reviewboard.extensions.base.JSExtension
subclasses used for providing JavaScript-side extensions.See js-extensions for more information.
-
metadata
A dictionary providing additional information on the extension, such as the name or a description.
By default, the metadata from
setup.py
is used when displaying information about the extension inside the administration UI. Extensions can override what the user sees by setting the values in this dictionary.The following metadata keys are supported:
Name
- The human-readable name of the extension, shown in the extension list.
Version
- The version of the extension. Usually, the version specified in
setup.py
suffices. Summary
- A brief summary of the extension, shown in the extension list.
Description
- A longer description of the extension. As of Review Board 2.0, this is not shown to the user, but it may be used in a future release.
Author
- The individual or company that authored the extension.
Author-email
- The contact e-mail address for the author of the extension.
Author-home-page
- The URL to the author’s public site.
Home-page
- The URL to the extension’s public site.
We generally recommend setting
Name
,Summary
, and the author information.Version
is usually best left to the package, unless there’s a special way it should be presented.
-
middleware
A list of Django middleware classes, which hook into various levels of the HTTP request/response and page render process.
This is an advanced feature, and is generally not needed by most extensions. Certain third-party apps may depend on middleware, though.
This setting is equivalent to modifying
settings.MIDDLEWARE_CLASSES
in Django.
-
requirements
A list of strings providing the names of other extensions the extension requires. Enabling the extension will in turn enable all required extensions, and can only be enabled if the required extensions can also be enabled.
See Dependencies for more information.
-
settings
An instance of
djblets.extensions.settings.Settings
. This attribute gives each extension an easy-to-use and persistent data store for settings.See Settings for more information.
-
resources
A list of
reviewboard.webapi.resources.WebAPIResource
subclasses. This is used to extend the Web API.See Extending the Web API for more information.
-