EmailHook¶
reviewboard.extensions.hooks.EmailHook allows extensions to modify
the recipients of e-mails generated from review request activity.
EmailHook requires two arguments for initialization: the extension
instance and the list of review request signals to listen for. It can listen
for the following signals:
Attempting to use any other signal will trigger an exception.
EmailHook should be sub-classed to provide the desired behaviour.
Convenient sub-classes exist for each of the above signals so that only the
get_to_field() and get_cc_field() methods have to be
defined. The default behaviour of these methods is to return the field
unmodified.
These sub-classes are:
Example¶
from typing import TYPE_CHECKING
from reviewboard.extensions.base import Extension
from reviewboard.extensions.hooks import EmailHook
from reviewboard.reviews.signals import (review_request_published,
review_published,
reply_published,
review_request_closed)
if TYPE_CHECKING:
from reviewboard.notifications.email.utils import RecipientList
class SampleEmailHook(EmailHook):
def __init__(
self,
extension: Extension,
) -> None:
super().__init__(
extension,
signals=[
review_request_published,
review_request_closed,
review_published,
reply_published,
])
def get_to_field(
self,
to_field: RecipientList,
**kwargs,
) -> RecipientList:
if 'user' in kwargs:
to_field.add(kwargs['user'])
return to_field
def get_cc_field(
self,
cc_field: RecipientList,
**kwargs,
) -> RecipientList:
return set()
class SampleExtension(Extension):
def initialize(self) -> None:
SampleEmailHook(self)