Fixes: #14044 - Allow regex renaming of unnamed devices

* Allow regex renaming of unnamed devices (already allowed actually)
* Catch errors relating to unnamed devices or integrity errors as a result of the rename process
This commit is contained in:
Daniel Sheppard 2024-08-19 21:16:08 -05:00
parent 96802b4edb
commit 75b0bea22b
2 changed files with 19 additions and 0 deletions

View File

@ -2122,6 +2122,17 @@ class DeviceBulkRenameView(generic.BulkRenameView):
filterset = filtersets.DeviceFilterSet filterset = filtersets.DeviceFilterSet
table = tables.DeviceTable table = tables.DeviceTable
def _rename_objects(self, form, selected_objects):
# Check devices for any unnamed devices and enforce requirements on the renaming of devices
for obj in selected_objects:
if not form.cleaned_data['use_regex'] and not obj.name:
from django.core.exceptions import ValidationError
raise ValidationError({
'use_regex': 'You must use regex to rename a unnamed device and must pass device uniqueness checks'
})
super()._rename_objects(form, selected_objects)
@register_model_view(Device, 'contacts') @register_model_view(Device, 'contacts')
class DeviceContactsView(ObjectContactsView): class DeviceContactsView(ObjectContactsView):

View File

@ -776,6 +776,14 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
) )
return redirect(self.get_return_url(request)) return redirect(self.get_return_url(request))
except IntegrityError as e:
messages.error(self.request, ", ".join(e.args))
clear_events.send(sender=self)
except ValidationError as e:
messages.error(self.request, ", ".join(e.messages))
clear_events.send(sender=self)
except (AbortRequest, PermissionsViolation) as e: except (AbortRequest, PermissionsViolation) as e:
logger.debug(e.message) logger.debug(e.message)
form.add_error(None, e.message) form.add_error(None, e.message)