mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* 4751 add plugin buttons to list templates * 4751 add plugin buttons to list templates * 4751 add documentation * 4751 fix object reference * 4751 update docs
74 lines
2.9 KiB
Python
74 lines
2.9 KiB
Python
from django.template.loader import get_template
|
|
|
|
__all__ = (
|
|
'PluginTemplateExtension',
|
|
)
|
|
|
|
|
|
class PluginTemplateExtension:
|
|
"""
|
|
This class is used to register plugin content to be injected into core NetBox templates. It contains methods
|
|
that are overridden by plugin authors to return template content.
|
|
|
|
The `model` attribute on the class defines the which model detail page this class renders content for. It
|
|
should be set as a string in the form '<app_label>.<model_name>'. render() provides the following context data:
|
|
|
|
* object - The object being viewed
|
|
* request - The current request
|
|
* settings - Global NetBox settings
|
|
* config - Plugin-specific configuration parameters
|
|
"""
|
|
model = None
|
|
|
|
def __init__(self, context):
|
|
self.context = context
|
|
|
|
def render(self, template_name, extra_context=None):
|
|
"""
|
|
Convenience method for rendering the specified Django template using the default context data. An additional
|
|
context dictionary may be passed as `extra_context`.
|
|
"""
|
|
if extra_context is None:
|
|
extra_context = {}
|
|
elif not isinstance(extra_context, dict):
|
|
raise TypeError("extra_context must be a dictionary")
|
|
|
|
return get_template(template_name).render({**self.context, **extra_context})
|
|
|
|
def left_page(self):
|
|
"""
|
|
Content that will be rendered on the left of the detail page view. Content should be returned as an
|
|
HTML string. Note that content does not need to be marked as safe because this is automatically handled.
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def right_page(self):
|
|
"""
|
|
Content that will be rendered on the right of the detail page view. Content should be returned as an
|
|
HTML string. Note that content does not need to be marked as safe because this is automatically handled.
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def full_width_page(self):
|
|
"""
|
|
Content that will be rendered within the full width of the detail page view. Content should be returned as an
|
|
HTML string. Note that content does not need to be marked as safe because this is automatically handled.
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def buttons(self):
|
|
"""
|
|
Buttons that will be rendered and added to the existing list of buttons on the detail page view. Content
|
|
should be returned as an HTML string. Note that content does not need to be marked as safe because this is
|
|
automatically handled.
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def list_buttons(self):
|
|
"""
|
|
Buttons that will be rendered and added to the existing list of buttons on the list view. Content
|
|
should be returned as an HTML string. Note that content does not need to be marked as safe because this is
|
|
automatically handled.
|
|
"""
|
|
raise NotImplementedError
|