diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 1857e5f8f..df2625e67 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -139,14 +139,14 @@ class LabeledComponentForm(BootstrapMixin, forms.Form): def clean(self): # Validate that the number of components being created from both the name_pattern and label_pattern are equal - name_pattern_count = len(self.cleaned_data['name_pattern']) - label_pattern_count = len(self.cleaned_data['label_pattern']) - if label_pattern_count and name_pattern_count != label_pattern_count: - raise forms.ValidationError({ - 'label_pattern': 'The provided name pattern will create {} components, however {} labels will ' - 'be generated. These counts must match.'.format( - name_pattern_count, label_pattern_count) - }, code='label_pattern_mismatch') + if self.cleaned_data['label_pattern']: + name_pattern_count = len(self.cleaned_data['name_pattern']) + label_pattern_count = len(self.cleaned_data['label_pattern']) + if name_pattern_count != label_pattern_count: + raise forms.ValidationError({ + 'label_pattern': f'The provided name pattern will create {name_pattern_count} components, however ' + f'{label_pattern_count} labels will be generated. These counts must match.' + }, code='label_pattern_mismatch') # diff --git a/netbox/utilities/forms.py b/netbox/utilities/forms.py index b2ce1592a..851efd24f 100644 --- a/netbox/utilities/forms.py +++ b/netbox/utilities/forms.py @@ -529,8 +529,8 @@ class ExpandableNameField(forms.CharField): """ def to_python(self, value): - if value is None: - return list() + if not value: + return '' if re.search(ALPHANUMERIC_EXPANSION_PATTERN, value): return list(expand_alphanumeric_pattern(value)) return [value] @@ -830,31 +830,6 @@ class ImportForm(BootstrapMixin, forms.Form): }) -class LabeledComponentForm(BootstrapMixin, forms.Form): - """ - Base form for adding label pattern validation to `Create` forms - """ - name_pattern = ExpandableNameField( - label='Name' - ) - label_pattern = ExpandableNameField( - label='Label', - required=False - ) - - def clean(self): - - # Validate that the number of components being created from both the name_pattern and label_pattern are equal - name_pattern_count = len(self.cleaned_data['name_pattern']) - label_pattern_count = len(self.cleaned_data['label_pattern']) - if label_pattern_count and name_pattern_count != label_pattern_count: - raise forms.ValidationError({ - 'label_pattern': 'The provided name pattern will create {} components, however {} labels will ' - 'be generated. These counts must match.'.format( - name_pattern_count, label_pattern_count) - }, code='label_pattern_mismatch') - - class TableConfigForm(BootstrapMixin, forms.Form): """ Form for configuring user's table preferences.