Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes: #17459 - Ensure help text on component create forms shows both bulk edit and substitution token instructions #17931

Merged
merged 7 commits into from
Nov 21, 2024
6 changes: 6 additions & 0 deletions netbox/dcim/forms/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@
'ModuleCommonForm'
)

COMPONENT_BULK_CREATE_HELP_TEXT = (
"Alphanumeric ranges are supported for bulk creation. Mixed cases and types "
"within a single range are not supported (example: <code>[ge,xe]-0/0/[0-9]</code>). The string "
"<code>{module}</code> will be replaced with the position of the assigned module, if any."
)


class InterfaceCommonForm(forms.Form):
mac_address = forms.CharField(
Expand Down
5 changes: 4 additions & 1 deletion netbox/dcim/forms/model_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from utilities.forms.widgets import APISelect, ClearableFileInput, HTMXSelect, NumberWithOptions, SelectWithPK
from virtualization.models import Cluster
from wireless.models import WirelessLAN, WirelessLANGroup
from .common import InterfaceCommonForm, ModuleCommonForm
from .common import COMPONENT_BULK_CREATE_HELP_TEXT, InterfaceCommonForm, ModuleCommonForm

__all__ = (
'CableForm',
Expand Down Expand Up @@ -909,6 +909,9 @@ def __init__(self, *args, **kwargs):
if self.instance.pk:
self.fields['module_type'].disabled = True

# Components attached to a module need to present this standardized substitution help text.
self.fields['name'].help_text = _(COMPONENT_BULK_CREATE_HELP_TEXT)


class ConsolePortTemplateForm(ModularComponentTemplateForm):
fieldsets = (
Expand Down
16 changes: 8 additions & 8 deletions netbox/dcim/forms/object_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from utilities.forms.rendering import FieldSet
from utilities.forms.widgets import APISelect
from . import model_forms
from .common import COMPONENT_BULK_CREATE_HELP_TEXT

__all__ = (
'ComponentCreateForm',
Expand Down Expand Up @@ -52,6 +53,13 @@ class ComponentCreateForm(forms.Form):
# ComponentCreateView when creating objects.
replication_fields = ('name', 'label')

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

# Components attached to a module need to present this standardized substitution help text.
if 'module' in self.fields:
jeremystretch marked this conversation as resolved.
Show resolved Hide resolved
self.fields['name'].help_text = _(COMPONENT_BULK_CREATE_HELP_TEXT)

def clean(self):
super().clean()

Expand Down Expand Up @@ -243,14 +251,6 @@ class InterfaceCreateForm(ComponentCreateForm, model_forms.InterfaceForm):
class Meta(model_forms.InterfaceForm.Meta):
exclude = ('name', 'label')

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if 'module' in self.fields:
self.fields['name'].help_text += _(
"The string <code>{module}</code> will be replaced with the position of the assigned module, if any."
)


class FrontPortCreateForm(ComponentCreateForm, model_forms.FrontPortForm):
device = DynamicModelChoiceField(
Expand Down
Loading