Closes #18072: Remove support for single model registration from PluginTemplateExtension

This commit is contained in:
Jeremy Stretch 2025-02-20 17:02:05 -05:00
parent 08b2fc424a
commit 7e669d1a14
2 changed files with 10 additions and 13 deletions

View File

@ -1,7 +1,7 @@
import inspect import inspect
import warnings
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from netbox.registry import registry from netbox.registry import registry
from .navigation import PluginMenu, PluginMenuButton, PluginMenuItem from .navigation import PluginMenu, PluginMenuButton, PluginMenuItem
from .templates import PluginTemplateExtension from .templates import PluginTemplateExtension
@ -35,16 +35,8 @@ def register_template_extensions(class_list):
) )
if template_extension.models: if template_extension.models:
# Registration for multiple models # Registration for specific models
models = template_extension.models models = template_extension.models
elif template_extension.model:
# Registration for a single model (deprecated)
warnings.warn(
"PluginTemplateExtension.model is deprecated and will be removed in a future release. Use "
"'models' instead.",
DeprecationWarning
)
models = [template_extension.model]
else: else:
# Global registration (no specific models) # Global registration (no specific models)
models = [None] models = [None]

View File

@ -11,8 +11,14 @@ class PluginTemplateExtension:
This class is used to register plugin content to be injected into core NetBox templates. It contains methods 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. 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 The `models` attribute on the class defines the which specific model detail pages this class renders content
should be set as a string in the form '<app_label>.<model_name>'. render() provides the following context data: for. It should be defined as a list of strings in the following form:
models = ['<app_label>.<model_name>', '<app_label>.<model_name>']
If `models` is left as None, the extension will render for _all_ models.
The `render()` method provides the following context data:
* object - The object being viewed (object views only) * object - The object being viewed (object views only)
* model - The type of object being viewed (list views only) * model - The type of object being viewed (list views only)
@ -21,7 +27,6 @@ class PluginTemplateExtension:
* config - Plugin-specific configuration parameters * config - Plugin-specific configuration parameters
""" """
models = None models = None
model = None # Deprecated; use `models` instead
def __init__(self, context): def __init__(self, context):
self.context = context self.context = context