mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 04:02:52 -06:00
Extend BulkRenameView to support arbitrary field names
This commit is contained in:
parent
501276817e
commit
5e54115d95
@ -732,6 +732,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
"""
|
"""
|
||||||
An extendable view for renaming objects in bulk.
|
An extendable view for renaming objects in bulk.
|
||||||
"""
|
"""
|
||||||
|
field_name = 'name'
|
||||||
template_name = 'generic/bulk_rename.html'
|
template_name = 'generic/bulk_rename.html'
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -761,12 +762,12 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
replace = form.cleaned_data['replace']
|
replace = form.cleaned_data['replace']
|
||||||
if form.cleaned_data['use_regex']:
|
if form.cleaned_data['use_regex']:
|
||||||
try:
|
try:
|
||||||
obj.new_name = re.sub(find, replace, obj.name or '')
|
obj.new_name = re.sub(find, replace, getattr(obj, self.field_name, ''))
|
||||||
# Catch regex group reference errors
|
# Catch regex group reference errors
|
||||||
except re.error:
|
except re.error:
|
||||||
obj.new_name = obj.name
|
obj.new_name = getattr(obj, self.field_name)
|
||||||
else:
|
else:
|
||||||
obj.new_name = (obj.name or '').replace(find, replace)
|
obj.new_name = getattr(obj, self.field_name, '').replace(find, replace)
|
||||||
renamed_pks.append(obj.pk)
|
renamed_pks.append(obj.pk)
|
||||||
|
|
||||||
return renamed_pks
|
return renamed_pks
|
||||||
@ -785,7 +786,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
|
|
||||||
if '_apply' in request.POST:
|
if '_apply' in request.POST:
|
||||||
for obj in selected_objects:
|
for obj in selected_objects:
|
||||||
obj.name = obj.new_name
|
setattr(obj, self.field_name, obj.new_name)
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
# Enforce constrained permissions
|
# Enforce constrained permissions
|
||||||
@ -815,6 +816,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
selected_objects = self.queryset.filter(pk__in=form.initial['pk'])
|
selected_objects = self.queryset.filter(pk__in=form.initial['pk'])
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
|
'field_name': self.field_name,
|
||||||
'form': form,
|
'form': form,
|
||||||
'obj_type_plural': self.queryset.model._meta.verbose_name_plural,
|
'obj_type_plural': self.queryset.model._meta.verbose_name_plural,
|
||||||
'selected_objects': selected_objects,
|
'selected_objects': selected_objects,
|
||||||
|
@ -42,10 +42,12 @@ Context:
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for obj in selected_objects %}
|
{% for obj in selected_objects %}
|
||||||
<tr{% if obj.new_name and obj.name != obj.new_name %} class="success"{% endif %}>
|
{% with obj_name=obj|getattr:field_name %}
|
||||||
<td>{{ obj.name }}</td>
|
<tr{% if obj.new_name and obj_name != obj.new_name %} class="success"{% endif %}>
|
||||||
<td>{{ obj.new_name }}</td>
|
<td>{{ obj_name }}</td>
|
||||||
</tr>
|
<td>{{ obj.new_name }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endwith %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
Reference in New Issue
Block a user