Skip to content

Commit 13ddd5f

Browse files
Fixes #19230: Allow label reuse when creating multiple components from a pattern (#19261)
1 parent 60cdf89 commit 13ddd5f

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

netbox/dcim/forms/object_create.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,23 @@ class ComponentCreateForm(forms.Form):
5555
def clean(self):
5656
super().clean()
5757

58-
# Validate that all replication fields generate an equal number of values
58+
# Validate that all replication fields generate an equal number of values (or a single value)
5959
if not (patterns := self.cleaned_data.get(self.replication_fields[0])):
6060
return
61-
6261
pattern_count = len(patterns)
6362
for field_name in self.replication_fields:
6463
value_count = len(self.cleaned_data[field_name])
65-
if self.cleaned_data[field_name] and value_count != pattern_count:
66-
raise forms.ValidationError({
67-
field_name: _(
68-
"The provided pattern specifies {value_count} values, but {pattern_count} are expected."
69-
).format(value_count=value_count, pattern_count=pattern_count)
70-
}, code='label_pattern_mismatch')
64+
if self.cleaned_data[field_name]:
65+
if value_count == 1:
66+
# If the field resolves to a single value (because no pattern was used), multiply it by the number
67+
# of expected values. This allows us to reuse the same label when creating multiple components.
68+
self.cleaned_data[field_name] = self.cleaned_data[field_name] * pattern_count
69+
elif value_count != pattern_count:
70+
raise forms.ValidationError({
71+
field_name: _(
72+
"The provided pattern specifies {value_count} values, but {pattern_count} are expected."
73+
).format(value_count=value_count, pattern_count=pattern_count)
74+
}, code='label_pattern_mismatch')
7175

7276

7377
#

0 commit comments

Comments
 (0)