Skip to content

Commit

Permalink
Fixes #729: Corrected cancellation links when editing secondary objects
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Dec 8, 2016
1 parent d509536 commit 5035a95
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 52 deletions.
8 changes: 4 additions & 4 deletions netbox/circuits/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class ProviderEditView(PermissionRequiredMixin, ObjectEditView):
model = Provider
form_class = forms.ProviderForm
template_name = 'circuits/provider_edit.html'
cancel_url = 'circuits:provider_list'
obj_list_url = 'circuits:provider_list'


class ProviderDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -88,8 +88,8 @@ class CircuitTypeEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'circuits.change_circuittype'
model = CircuitType
form_class = forms.CircuitTypeForm
success_url = 'circuits:circuittype_list'
cancel_url = 'circuits:circuittype_list'
obj_list_url = 'circuits:circuittype_list'
use_obj_view = False


class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -126,7 +126,7 @@ class CircuitEditView(PermissionRequiredMixin, ObjectEditView):
form_class = forms.CircuitForm
fields_initial = ['site']
template_name = 'circuits/circuit_edit.html'
cancel_url = 'circuits:circuit_list'
obj_list_url = 'circuits:circuit_list'


class CircuitDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down
29 changes: 14 additions & 15 deletions netbox/dcim/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.db import transaction
from django.db.models import Count
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect, render
Expand Down Expand Up @@ -99,7 +98,7 @@ class SiteEditView(PermissionRequiredMixin, ObjectEditView):
model = Site
form_class = forms.SiteForm
template_name = 'dcim/site_edit.html'
cancel_url = 'dcim:site_list'
obj_list_url = 'dcim:site_list'


class SiteDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -141,8 +140,8 @@ class RackGroupEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_rackgroup'
model = RackGroup
form_class = forms.RackGroupForm
success_url = 'dcim:rackgroup_list'
cancel_url = 'dcim:rackgroup_list'
obj_list_url = 'dcim:rackgroup_list'
use_obj_view = False


class RackGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand All @@ -166,8 +165,8 @@ class RackRoleEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_rackrole'
model = RackRole
form_class = forms.RackRoleForm
success_url = 'dcim:rackrole_list'
cancel_url = 'dcim:rackrole_list'
obj_list_url = 'dcim:rackrole_list'
use_obj_view = False


class RackRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -214,7 +213,7 @@ class RackEditView(PermissionRequiredMixin, ObjectEditView):
model = Rack
form_class = forms.RackForm
template_name = 'dcim/rack_edit.html'
cancel_url = 'dcim:rack_list'
obj_list_url = 'dcim:rack_list'


class RackDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -260,8 +259,8 @@ class ManufacturerEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_manufacturer'
model = Manufacturer
form_class = forms.ManufacturerForm
success_url = 'dcim:manufacturer_list'
cancel_url = 'dcim:manufacturer_list'
obj_list_url = 'dcim:manufacturer_list'
use_obj_view = False


class ManufacturerBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -332,7 +331,7 @@ class DeviceTypeEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_devicetype'
model = DeviceType
form_class = forms.DeviceTypeForm
cancel_url = 'dcim:devicetype_list'
obj_list_url = 'dcim:devicetype_list'


class DeviceTypeDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -497,8 +496,8 @@ class DeviceRoleEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_devicerole'
model = DeviceRole
form_class = forms.DeviceRoleForm
success_url = 'dcim:devicerole_list'
cancel_url = 'dcim:devicerole_list'
obj_list_url = 'dcim:devicerole_list'
use_obj_view = False


class DeviceRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand All @@ -522,8 +521,8 @@ class PlatformEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_platform'
model = Platform
form_class = forms.PlatformForm
success_url = 'dcim:platform_list'
cancel_url = 'dcim:platform_list'
obj_list_url = 'dcim:platform_list'
use_obj_view = False


class PlatformBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -617,7 +616,7 @@ class DeviceEditView(PermissionRequiredMixin, ObjectEditView):
form_class = forms.DeviceForm
fields_initial = ['site', 'rack', 'position', 'face', 'device_bay']
template_name = 'dcim/device_edit.html'
cancel_url = 'dcim:device_list'
obj_list_url = 'dcim:device_list'


class DeviceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down
23 changes: 11 additions & 12 deletions netbox/ipam/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from collections import OrderedDict
from django_tables2 import RequestConfig
import netaddr

Expand Down Expand Up @@ -117,7 +116,7 @@ class VRFEditView(PermissionRequiredMixin, ObjectEditView):
model = VRF
form_class = forms.VRFForm
template_name = 'ipam/vrf_edit.html'
cancel_url = 'ipam:vrf_list'
obj_list_url = 'ipam:vrf_list'


class VRFDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -241,8 +240,8 @@ class RIREditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'ipam.change_rir'
model = RIR
form_class = forms.RIRForm
success_url = 'ipam:rir_list'
cancel_url = 'ipam:rir_list'
obj_list_url = 'ipam:rir_list'
use_obj_view = False


class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -307,7 +306,7 @@ class AggregateEditView(PermissionRequiredMixin, ObjectEditView):
model = Aggregate
form_class = forms.AggregateForm
template_name = 'ipam/aggregate_edit.html'
cancel_url = 'ipam:aggregate_list'
obj_list_url = 'ipam:aggregate_list'


class AggregateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -353,8 +352,8 @@ class RoleEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'ipam.change_role'
model = Role
form_class = forms.RoleForm
success_url = 'ipam:role_list'
cancel_url = 'ipam:role_list'
obj_list_url = 'ipam:role_list'
use_obj_view = False


class RoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -438,7 +437,7 @@ class PrefixEditView(PermissionRequiredMixin, ObjectEditView):
form_class = forms.PrefixForm
template_name = 'ipam/prefix_edit.html'
fields_initial = ['vrf', 'tenant', 'site', 'prefix', 'vlan']
cancel_url = 'ipam:prefix_list'
obj_list_url = 'ipam:prefix_list'


class PrefixDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -602,7 +601,7 @@ class IPAddressEditView(PermissionRequiredMixin, ObjectEditView):
form_class = forms.IPAddressForm
fields_initial = ['address', 'vrf']
template_name = 'ipam/ipaddress_edit.html'
cancel_url = 'ipam:ipaddress_list'
obj_list_url = 'ipam:ipaddress_list'


class IPAddressDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down Expand Up @@ -665,8 +664,8 @@ class VLANGroupEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'ipam.change_vlangroup'
model = VLANGroup
form_class = forms.VLANGroupForm
success_url = 'ipam:vlangroup_list'
cancel_url = 'ipam:vlangroup_list'
obj_list_url = 'ipam:vlangroup_list'
use_obj_view = False


class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -705,7 +704,7 @@ class VLANEditView(PermissionRequiredMixin, ObjectEditView):
model = VLAN
form_class = forms.VLANForm
template_name = 'ipam/vlan_edit.html'
cancel_url = 'ipam:vlan_list'
obj_list_url = 'ipam:vlan_list'


class VLANDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down
4 changes: 2 additions & 2 deletions netbox/secrets/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class SecretRoleEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'secrets.change_secretrole'
model = SecretRole
form_class = forms.SecretRoleForm
success_url = 'secrets:secretrole_list'
cancel_url = 'secrets:secretrole_list'
obj_list_url = 'secrets:secretrole_list'
use_obj_view = False


class SecretRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down
6 changes: 3 additions & 3 deletions netbox/tenancy/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ class TenantGroupEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'tenancy.change_tenantgroup'
model = TenantGroup
form_class = forms.TenantGroupForm
success_url = 'tenancy:tenantgroup_list'
cancel_url = 'tenancy:tenantgroup_list'
obj_list_url = 'tenancy:tenantgroup_list'
use_obj_view = False


class TenantGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
Expand Down Expand Up @@ -83,7 +83,7 @@ class TenantEditView(PermissionRequiredMixin, ObjectEditView):
form_class = forms.TenantForm
fields_initial = ['group']
template_name = 'tenancy/tenant_edit.html'
cancel_url = 'tenancy:tenant_list'
obj_list_url = 'tenancy:tenant_list'


class TenantDeleteView(PermissionRequiredMixin, ObjectDeleteView):
Expand Down
28 changes: 12 additions & 16 deletions netbox/utilities/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ class ObjectEditView(View):
form_class = None
fields_initial = []
template_name = 'utilities/obj_edit.html'
success_url = None
cancel_url = None
obj_list_url = None
use_obj_view = True

def get_object(self, kwargs):
# Look up object by slug if one has been provided. Otherwise, use PK.
Expand All @@ -129,12 +129,13 @@ def get_object(self, kwargs):
else:
return get_object_or_404(self.model, pk=kwargs['pk'])

def get_cancel_url(self, obj):
if hasattr(obj, 'get_absolute_url'):
return obj.get_absolute_url()
if hasattr(obj, 'get_parent_url'):
return obj.get_parent_url()
return reverse(self.cancel_url)
def get_redirect_url(self, obj):
if obj and self.use_obj_view:
if hasattr(obj, 'get_absolute_url'):
return obj.get_absolute_url()
if hasattr(obj, 'get_parent_url'):
return obj.get_parent_url()
return reverse(self.obj_list_url)

def get(self, request, *args, **kwargs):

Expand All @@ -149,7 +150,7 @@ def get(self, request, *args, **kwargs):
'obj': obj,
'obj_type': self.model._meta.verbose_name,
'form': form,
'cancel_url': self.get_cancel_url(obj),
'cancel_url': self.get_redirect_url(obj),
})

def post(self, request, *args, **kwargs):
Expand Down Expand Up @@ -179,18 +180,13 @@ def post(self, request, *args, **kwargs):

if '_addanother' in request.POST:
return redirect(request.path)
elif self.success_url:
return redirect(self.success_url)
elif hasattr(obj, 'get_absolute_url'):
return redirect(obj.get_absolute_url())
elif hasattr(obj, 'get_parent_url'):
return redirect(obj.get_parent_url())
return redirect(self.get_redirect_url(obj))

return render(request, self.template_name, {
'obj': obj,
'obj_type': self.model._meta.verbose_name,
'form': form,
'cancel_url': self.get_cancel_url(obj),
'cancel_url': self.get_redirect_url(obj),
})


Expand Down

0 comments on commit 5035a95

Please sign in to comment.