Jump to >

AccountPagesHook

reviewboard.extensions.hooks.AccountPagesHook allows extensions to add new “pages” to the My Account page. These can be used to provide user-level customization for an extension, information display, or anything else the extension may need.

These pages can contain one or more forms, registered either by this extension or by another. If needed, they can even provide their own custom template, though it is recommended to use a form-based approach.

A caller must subclass reviewboard.accounts.pages.AccountPage and fill in the required fields: page_id and page_title. It will also generally need to provide form_classes, which is a list of reviewboard.accounts.forms.pages.AccountPageForm.

The custom page (or pages) are then registered by instantiating the hook and passing in the list of page classes.

Page IDs must be unique. It is best to choose a page ID that contains some sort of extension-specific information, such as the vendor or the extension ID. Page IDs are used when registered new forms (using AccountPageFormsHook) in order to specify where the form should appear.

Example

from django.db import models
from reviewboard.accounts.forms.pages import AccountPageForm
from reviewboard.accounts.pages import AccountPage
from reviewboard.extensions.base import Extension
from reviewboard.extensions.hooks import AccountPagesHook


class SamplePageForm(AccountPageForm):
    form_id = 'myvendor_form'
    form_title = 'My Form'

    my_field = models.CharField(max_length=100)


class SamplePage(AccountPage):
    page_id = 'myvendor_page'
    page_title = 'My Page'
    form_classes = [SamplePageForm]


class SampleExtension(Extension):
    def initialize(self):
        AccountPagesHook(self, [SamplePage])