mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #760: Redirect user back to device view after deleting an assigned IP address
This commit is contained in:
@ -13,7 +13,7 @@
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{% if perms.ipam.delete_ipaddress %}
|
||||
<a href="{% url 'ipam:ipaddress_delete' pk=ip.pk %}" class="btn btn-danger btn-xs">
|
||||
<a href="{% url 'ipam:ipaddress_delete' pk=ip.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
|
||||
<i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete IP address"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
@ -386,7 +386,12 @@ class BootstrapMixin(forms.BaseForm):
|
||||
|
||||
|
||||
class ConfirmationForm(BootstrapMixin, forms.Form):
|
||||
"""
|
||||
A generic confirmation form. The form is not valid unless the confirm field is checked. An optional return_url can
|
||||
be specified to direct the user to a specific URL after the action has been taken.
|
||||
"""
|
||||
confirm = forms.BooleanField(required=True)
|
||||
return_url = forms.CharField(required=False, widget=forms.HiddenInput())
|
||||
|
||||
|
||||
class BulkEditForm(forms.Form):
|
||||
|
@ -239,13 +239,16 @@ class ObjectDeleteView(View):
|
||||
def get(self, request, **kwargs):
|
||||
|
||||
obj = self.get_object(kwargs)
|
||||
form = ConfirmationForm()
|
||||
initial_data = {
|
||||
'return_url': request.GET.get('return_url'),
|
||||
}
|
||||
form = ConfirmationForm(initial=initial_data)
|
||||
|
||||
return render(request, self.template_name, {
|
||||
'obj': obj,
|
||||
'form': form,
|
||||
'obj_type': self.model._meta.verbose_name,
|
||||
'cancel_url': self.get_cancel_url(obj),
|
||||
'cancel_url': request.GET.get('return_url') or self.get_cancel_url(obj),
|
||||
})
|
||||
|
||||
def post(self, request, **kwargs):
|
||||
@ -261,7 +264,10 @@ class ObjectDeleteView(View):
|
||||
msg = u'Deleted {} {}'.format(self.model._meta.verbose_name, obj)
|
||||
messages.success(request, msg)
|
||||
UserAction.objects.log_delete(request.user, obj, msg)
|
||||
if self.redirect_url:
|
||||
return_url = form.cleaned_data['return_url']
|
||||
if return_url and is_safe_url(url=return_url, host=request.get_host()):
|
||||
return redirect(return_url)
|
||||
elif self.redirect_url:
|
||||
return redirect(self.redirect_url)
|
||||
elif hasattr(obj, 'get_parent_url'):
|
||||
return redirect(obj.get_parent_url())
|
||||
@ -272,7 +278,7 @@ class ObjectDeleteView(View):
|
||||
'obj': obj,
|
||||
'form': form,
|
||||
'obj_type': self.model._meta.verbose_name,
|
||||
'cancel_url': self.get_cancel_url(obj),
|
||||
'cancel_url': request.GET.get('return_url') or self.get_cancel_url(obj),
|
||||
})
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user