mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Merge pull request #9850 from sleepinggenius2/issue_9827
Adds patterned_fields support for bulk component creation
This commit is contained in:
@ -2707,6 +2707,7 @@ class DeviceBulkAddModuleBayView(generic.BulkComponentCreateView):
|
|||||||
filterset = filtersets.DeviceFilterSet
|
filterset = filtersets.DeviceFilterSet
|
||||||
table = tables.DeviceTable
|
table = tables.DeviceTable
|
||||||
default_return_url = 'dcim:device_list'
|
default_return_url = 'dcim:device_list'
|
||||||
|
patterned_fields = ('name', 'label', 'position')
|
||||||
|
|
||||||
|
|
||||||
class DeviceBulkAddDeviceBayView(generic.BulkComponentCreateView):
|
class DeviceBulkAddDeviceBayView(generic.BulkComponentCreateView):
|
||||||
|
@ -795,6 +795,7 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
model_form = None
|
model_form = None
|
||||||
filterset = None
|
filterset = None
|
||||||
table = None
|
table = None
|
||||||
|
patterned_fields = ('name', 'label')
|
||||||
|
|
||||||
def get_required_permission(self):
|
def get_required_permission(self):
|
||||||
return f'dcim.add_{self.queryset.model._meta.model_name}'
|
return f'dcim.add_{self.queryset.model._meta.model_name}'
|
||||||
@ -830,16 +831,16 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
|
|
||||||
for obj in data['pk']:
|
for obj in data['pk']:
|
||||||
|
|
||||||
names = data['name_pattern']
|
pattern_count = len(data[f'{self.patterned_fields[0]}_pattern'])
|
||||||
labels = data['label_pattern'] if 'label_pattern' in data else None
|
for i in range(pattern_count):
|
||||||
for i, name in enumerate(names):
|
|
||||||
label = labels[i] if labels else None
|
|
||||||
|
|
||||||
component_data = {
|
component_data = {
|
||||||
self.parent_field: obj.pk,
|
self.parent_field: obj.pk
|
||||||
'name': name,
|
|
||||||
'label': label
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for field_name in self.patterned_fields:
|
||||||
|
if data.get(f'{field_name}_pattern'):
|
||||||
|
component_data[field_name] = data[f'{field_name}_pattern'][i]
|
||||||
|
|
||||||
component_data.update(data)
|
component_data.update(data)
|
||||||
component_form = self.model_form(component_data)
|
component_form = self.model_form(component_data)
|
||||||
if component_form.is_valid():
|
if component_form.is_valid():
|
||||||
|
Reference in New Issue
Block a user