mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-08 00:28:16 -06:00
Misc cleanup & fixes
This commit is contained in:
parent
1579046fd6
commit
b7d16b33a7
@ -327,7 +327,9 @@ class CircuitSwapTerminations(generic.ObjectEditView):
|
|||||||
|
|
||||||
# Circuit must have at least one termination to swap
|
# Circuit must have at least one termination to swap
|
||||||
if not circuit.termination_a and not circuit.termination_z:
|
if not circuit.termination_a and not circuit.termination_z:
|
||||||
messages.error(request, _("No terminations have been defined for circuit {}.").format(circuit))
|
messages.error(request, _(
|
||||||
|
"No terminations have been defined for circuit {circuit}."
|
||||||
|
).format(circuit=circuit))
|
||||||
return redirect('circuits:circuit', pk=circuit.pk)
|
return redirect('circuits:circuit', pk=circuit.pk)
|
||||||
|
|
||||||
return render(request, 'circuits/circuit_terminations_swap.html', {
|
return render(request, 'circuits/circuit_terminations_swap.html', {
|
||||||
|
@ -76,7 +76,10 @@ class DataSourceSyncView(BaseObjectView):
|
|||||||
datasource = get_object_or_404(self.queryset, pk=pk)
|
datasource = get_object_or_404(self.queryset, pk=pk)
|
||||||
job = datasource.enqueue_sync_job(request)
|
job = datasource.enqueue_sync_job(request)
|
||||||
|
|
||||||
messages.success(request, _("Queued job #{job_id} to sync {datasource}").format(job_id=job.pk, datasource=datasource))
|
messages.success(
|
||||||
|
request,
|
||||||
|
_("Queued job #{job_id} to sync {datasource}").format(job_id=job.pk, datasource=datasource)
|
||||||
|
)
|
||||||
return redirect(datasource.get_absolute_url())
|
return redirect(datasource.get_absolute_url())
|
||||||
|
|
||||||
|
|
||||||
@ -235,7 +238,7 @@ class ConfigRevisionRestoreView(ContentTypePermissionRequiredMixin, View):
|
|||||||
|
|
||||||
candidate_config = get_object_or_404(ConfigRevision, pk=pk)
|
candidate_config = get_object_or_404(ConfigRevision, pk=pk)
|
||||||
candidate_config.activate()
|
candidate_config.activate()
|
||||||
messages.success(request, _("Restored configuration revision #{pk}").format(pk=pk))
|
messages.success(request, _("Restored configuration revision #{id}").format(id=pk))
|
||||||
|
|
||||||
return redirect(candidate_config.get_absolute_url())
|
return redirect(candidate_config.get_absolute_url())
|
||||||
|
|
||||||
@ -379,9 +382,9 @@ class BackgroundTaskDeleteView(BaseRQView):
|
|||||||
# Remove job id from queue and delete the actual job
|
# Remove job id from queue and delete the actual job
|
||||||
queue.connection.lrem(queue.key, 0, job.id)
|
queue.connection.lrem(queue.key, 0, job.id)
|
||||||
job.delete()
|
job.delete()
|
||||||
messages.success(request, _('Deleted job {job_id}').format(job_id=job_id))
|
messages.success(request, _('Job {id} has been deleted.').format(id=job_id))
|
||||||
else:
|
else:
|
||||||
messages.error(request, _('Error deleting job: {error}').format(error=job.errors[0]))
|
messages.error(request, _('Error deleting job {id}: {error}').format(id=job_id, error=form.errors[0]))
|
||||||
|
|
||||||
return redirect(reverse('core:background_queue_list'))
|
return redirect(reverse('core:background_queue_list'))
|
||||||
|
|
||||||
@ -394,13 +397,13 @@ class BackgroundTaskRequeueView(BaseRQView):
|
|||||||
try:
|
try:
|
||||||
job = RQ_Job.fetch(job_id, connection=get_redis_connection(config['connection_config']),)
|
job = RQ_Job.fetch(job_id, connection=get_redis_connection(config['connection_config']),)
|
||||||
except NoSuchJobError:
|
except NoSuchJobError:
|
||||||
raise Http404(_("Job {job_id} not found").format(job_id=job_id))
|
raise Http404(_("Job {id} not found.").format(id=job_id))
|
||||||
|
|
||||||
queue_index = QUEUES_MAP[job.origin]
|
queue_index = QUEUES_MAP[job.origin]
|
||||||
queue = get_queue_by_index(queue_index)
|
queue = get_queue_by_index(queue_index)
|
||||||
|
|
||||||
requeue_job(job_id, connection=queue.connection, serializer=queue.serializer)
|
requeue_job(job_id, connection=queue.connection, serializer=queue.serializer)
|
||||||
messages.success(request, _('You have successfully requeued: {job_id}').format(job_id=job_id))
|
messages.success(request, _('Job {id} has been re-enqueued.').format(id=job_id))
|
||||||
return redirect(reverse('core:background_task', args=[job_id]))
|
return redirect(reverse('core:background_task', args=[job_id]))
|
||||||
|
|
||||||
|
|
||||||
@ -412,7 +415,7 @@ class BackgroundTaskEnqueueView(BaseRQView):
|
|||||||
try:
|
try:
|
||||||
job = RQ_Job.fetch(job_id, connection=get_redis_connection(config['connection_config']),)
|
job = RQ_Job.fetch(job_id, connection=get_redis_connection(config['connection_config']),)
|
||||||
except NoSuchJobError:
|
except NoSuchJobError:
|
||||||
raise Http404(_("Job {job_id} not found").format(job_id=job_id))
|
raise Http404(_("Job {id} not found.").format(id=job_id))
|
||||||
|
|
||||||
queue_index = QUEUES_MAP[job.origin]
|
queue_index = QUEUES_MAP[job.origin]
|
||||||
queue = get_queue_by_index(queue_index)
|
queue = get_queue_by_index(queue_index)
|
||||||
@ -435,7 +438,7 @@ class BackgroundTaskEnqueueView(BaseRQView):
|
|||||||
registry = ScheduledJobRegistry(queue.name, queue.connection)
|
registry = ScheduledJobRegistry(queue.name, queue.connection)
|
||||||
registry.remove(job)
|
registry.remove(job)
|
||||||
|
|
||||||
messages.success(request, _('You have successfully enqueued: {job_id}').format(job_id=job_id))
|
messages.success(request, _('Job {job_id} has been enqueued.').format(job_id=job_id))
|
||||||
return redirect(reverse('core:background_task', args=[job_id]))
|
return redirect(reverse('core:background_task', args=[job_id]))
|
||||||
|
|
||||||
|
|
||||||
@ -452,11 +455,11 @@ class BackgroundTaskStopView(BaseRQView):
|
|||||||
queue_index = QUEUES_MAP[job.origin]
|
queue_index = QUEUES_MAP[job.origin]
|
||||||
queue = get_queue_by_index(queue_index)
|
queue = get_queue_by_index(queue_index)
|
||||||
|
|
||||||
stopped, __ = stop_jobs(queue, job_id)
|
stopped_jobs = stop_jobs(queue, job_id)[0]
|
||||||
if len(stopped) == 1:
|
if len(stopped_jobs) == 1:
|
||||||
messages.success(request, _('You have successfully stopped {job_id}').format(job_id=job_id))
|
messages.success(request, _('Job {id} has been stopped.').format(id=job_id))
|
||||||
else:
|
else:
|
||||||
messages.error(request, _('Failed to stop {job_id}').format(job_id=job_id))
|
messages.error(request, _('Failed to stop job {id}').format(id=job_id))
|
||||||
|
|
||||||
return redirect(reverse('core:background_task', args=[job_id]))
|
return redirect(reverse('core:background_task', args=[job_id]))
|
||||||
|
|
||||||
|
@ -2059,7 +2059,7 @@ class DeviceRenderConfigView(generic.ObjectView):
|
|||||||
try:
|
try:
|
||||||
rendered_config = config_template.render(context=context_data)
|
rendered_config = config_template.render(context=context_data)
|
||||||
except TemplateError as e:
|
except TemplateError as e:
|
||||||
messages.error(request, _("An error occurred while rendering the template: {e}").format(e=e))
|
messages.error(request, _("An error occurred while rendering the template: {error}").format(error=e))
|
||||||
rendered_config = traceback.format_exc()
|
rendered_config = traceback.format_exc()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -2823,7 +2823,13 @@ class DeviceBayPopulateView(generic.ObjectEditView):
|
|||||||
device_bay.snapshot()
|
device_bay.snapshot()
|
||||||
device_bay.installed_device = form.cleaned_data['installed_device']
|
device_bay.installed_device = form.cleaned_data['installed_device']
|
||||||
device_bay.save()
|
device_bay.save()
|
||||||
messages.success(request, _("Added {} to {}.").format(device_bay.installed_device, device_bay))
|
messages.success(
|
||||||
|
request,
|
||||||
|
_("Installed device {device} in bay {device_bay}.").format(
|
||||||
|
device=device_bay.installed_device,
|
||||||
|
device_bay=device_bay
|
||||||
|
)
|
||||||
|
)
|
||||||
return_url = self.get_return_url(request)
|
return_url = self.get_return_url(request)
|
||||||
|
|
||||||
return redirect(return_url)
|
return redirect(return_url)
|
||||||
@ -2858,7 +2864,13 @@ class DeviceBayDepopulateView(generic.ObjectEditView):
|
|||||||
removed_device = device_bay.installed_device
|
removed_device = device_bay.installed_device
|
||||||
device_bay.installed_device = None
|
device_bay.installed_device = None
|
||||||
device_bay.save()
|
device_bay.save()
|
||||||
messages.success(request, _("{removed_device} has been removed from {device_bay}.").format(removed_device=removed_device, device_bay=device_bay))
|
messages.success(
|
||||||
|
request,
|
||||||
|
_("Removed device {device} from bay {device_bay}.").format(
|
||||||
|
device=removed_device,
|
||||||
|
device_bay=device_bay
|
||||||
|
)
|
||||||
|
)
|
||||||
return_url = self.get_return_url(request, device_bay.device)
|
return_url = self.get_return_url(request, device_bay.device)
|
||||||
|
|
||||||
return redirect(return_url)
|
return redirect(return_url)
|
||||||
@ -3471,7 +3483,10 @@ class VirtualChassisRemoveMemberView(ObjectPermissionRequiredMixin, GetReturnURL
|
|||||||
# Protect master device from being removed
|
# Protect master device from being removed
|
||||||
virtual_chassis = VirtualChassis.objects.filter(master=device).first()
|
virtual_chassis = VirtualChassis.objects.filter(master=device).first()
|
||||||
if virtual_chassis is not None:
|
if virtual_chassis is not None:
|
||||||
messages.error(request, _('Unable to remove master device {device} from the virtual chassis.').format(device=device))
|
messages.error(
|
||||||
|
request,
|
||||||
|
_('Unable to remove master device {device} from the virtual chassis.').format(device=device)
|
||||||
|
)
|
||||||
return redirect(device.get_absolute_url())
|
return redirect(device.get_absolute_url())
|
||||||
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
|
@ -106,7 +106,13 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
|
|||||||
try:
|
try:
|
||||||
return template.render_to_response(self.queryset)
|
return template.render_to_response(self.queryset)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
messages.error(request, _("There was an error rendering the selected export template ({template}): {e}").format(template=template.name, e=e))
|
messages.error(
|
||||||
|
request,
|
||||||
|
_("There was an error rendering the selected export template ({template}): {error}").format(
|
||||||
|
template=template.name,
|
||||||
|
error=e
|
||||||
|
)
|
||||||
|
)
|
||||||
# Strip the `export` param and redirect user to the filtered objects list
|
# Strip the `export` param and redirect user to the filtered objects list
|
||||||
query_params = request.GET.copy()
|
query_params = request.GET.copy()
|
||||||
query_params.pop('export')
|
query_params.pop('export')
|
||||||
@ -668,7 +674,10 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
# Retrieve objects being edited
|
# Retrieve objects being edited
|
||||||
table = self.table(self.queryset.filter(pk__in=pk_list), orderable=False)
|
table = self.table(self.queryset.filter(pk__in=pk_list), orderable=False)
|
||||||
if not table.rows:
|
if not table.rows:
|
||||||
messages.warning(request, _("No {} were selected.").format(model._meta.verbose_name_plural))
|
messages.warning(
|
||||||
|
request,
|
||||||
|
_("No {object_type} were selected.").format(object_type=model._meta.verbose_name_plural)
|
||||||
|
)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
@ -746,7 +755,13 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
raise PermissionsViolation
|
raise PermissionsViolation
|
||||||
|
|
||||||
model_name = self.queryset.model._meta.verbose_name_plural
|
model_name = self.queryset.model._meta.verbose_name_plural
|
||||||
messages.success(request, _("Renamed {len} {model_name}").format(len=len(selected_objects), model_name=model_name))
|
messages.success(
|
||||||
|
request,
|
||||||
|
_("Renamed {count} {object_type}").format(
|
||||||
|
count=len(selected_objects),
|
||||||
|
object_type=model_name
|
||||||
|
)
|
||||||
|
)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
|
||||||
except (AbortRequest, PermissionsViolation) as e:
|
except (AbortRequest, PermissionsViolation) as e:
|
||||||
@ -838,7 +853,10 @@ class BulkDeleteView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
messages.error(request, mark_safe(e.message))
|
messages.error(request, mark_safe(e.message))
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
|
||||||
msg = _("Deleted {deleted_count} {name}".format(deleted_count=deleted_count, name=model._meta.verbose_name_plural))
|
msg = _("Deleted {count} {object_type}").format(
|
||||||
|
count=deleted_count,
|
||||||
|
object_type=model._meta.verbose_name_plural
|
||||||
|
)
|
||||||
logger.info(msg)
|
logger.info(msg)
|
||||||
messages.success(request, msg)
|
messages.success(request, msg)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
@ -855,7 +873,10 @@ class BulkDeleteView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
# Retrieve objects being deleted
|
# Retrieve objects being deleted
|
||||||
table = self.table(self.queryset.filter(pk__in=pk_list), orderable=False)
|
table = self.table(self.queryset.filter(pk__in=pk_list), orderable=False)
|
||||||
if not table.rows:
|
if not table.rows:
|
||||||
messages.warning(request, _("No {} were selected for deletion.").format(model._meta.verbose_name_plural))
|
messages.warning(
|
||||||
|
request,
|
||||||
|
_("No {object_type} were selected for deletion.").format(object_type=model._meta.verbose_name_plural)
|
||||||
|
)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
@ -900,7 +921,10 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
|
|
||||||
selected_objects = self.parent_model.objects.filter(pk__in=pk_list)
|
selected_objects = self.parent_model.objects.filter(pk__in=pk_list)
|
||||||
if not selected_objects:
|
if not selected_objects:
|
||||||
messages.warning(request, _("No {} were selected.").format(self.parent_model._meta.verbose_name_plural))
|
messages.warning(
|
||||||
|
request,
|
||||||
|
_("No {object_type} were selected.").format(object_type=self.parent_model._meta.verbose_name_plural)
|
||||||
|
)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
table = self.table(selected_objects, orderable=False)
|
table = self.table(selected_objects, orderable=False)
|
||||||
|
|
||||||
|
@ -206,7 +206,10 @@ class ObjectSyncDataView(View):
|
|||||||
return redirect(obj.get_absolute_url())
|
return redirect(obj.get_absolute_url())
|
||||||
|
|
||||||
obj.sync(save=True)
|
obj.sync(save=True)
|
||||||
messages.success(request, _("Synchronized data for {name} {obj}.").format(name=model._meta.verbose_name, obj=obj))
|
messages.success(request, _("Synchronized data for {name} {obj}.").format(
|
||||||
|
name=model._meta.verbose_name,
|
||||||
|
obj=obj
|
||||||
|
))
|
||||||
|
|
||||||
return redirect(obj.get_absolute_url())
|
return redirect(obj.get_absolute_url())
|
||||||
|
|
||||||
|
@ -271,8 +271,9 @@ class ClusterAddDevicesView(generic.ObjectEditView):
|
|||||||
device.cluster = cluster
|
device.cluster = cluster
|
||||||
device.save()
|
device.save()
|
||||||
|
|
||||||
messages.success(request, _("Added {} devices to cluster {}").format(
|
messages.success(request, _("Added {count} devices to cluster {cluster}").format(
|
||||||
len(device_pks), cluster
|
count=len(device_pks),
|
||||||
|
cluster=cluster
|
||||||
))
|
))
|
||||||
return redirect(cluster.get_absolute_url())
|
return redirect(cluster.get_absolute_url())
|
||||||
|
|
||||||
@ -305,8 +306,9 @@ class ClusterRemoveDevicesView(generic.ObjectEditView):
|
|||||||
device.cluster = None
|
device.cluster = None
|
||||||
device.save()
|
device.save()
|
||||||
|
|
||||||
messages.success(request, _("Removed {} devices from cluster {}").format(
|
messages.success(request, _("Removed {count} devices from cluster {cluster}").format(
|
||||||
len(device_pks), cluster
|
count=len(device_pks),
|
||||||
|
cluster=cluster
|
||||||
))
|
))
|
||||||
return redirect(cluster.get_absolute_url())
|
return redirect(cluster.get_absolute_url())
|
||||||
|
|
||||||
@ -444,7 +446,7 @@ class VirtualMachineRenderConfigView(generic.ObjectView):
|
|||||||
try:
|
try:
|
||||||
rendered_config = config_template.render(context=context_data)
|
rendered_config = config_template.render(context=context_data)
|
||||||
except TemplateError as e:
|
except TemplateError as e:
|
||||||
messages.error(request, _("An error occurred while rendering the template: {e}").format(e=e))
|
messages.error(request, _("An error occurred while rendering the template: {error}").format(error=e))
|
||||||
rendered_config = traceback.format_exc()
|
rendered_config = traceback.format_exc()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Loading…
Reference in New Issue
Block a user