From cdccc3a47f7eedd285abc085b44b464a6f554e86 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 18 Jan 2017 14:07:46 -0500 Subject: [PATCH] Ditched get_parent_url() model method in favor of overrideable get_return_url() view method --- netbox/circuits/models.py | 3 --- netbox/circuits/views.py | 6 ++++-- netbox/dcim/models.py | 21 --------------------- netbox/dcim/views.py | 6 ++++-- netbox/ipam/models.py | 3 --- netbox/ipam/views.py | 3 +++ netbox/utilities/views.py | 14 +++++++------- 7 files changed, 18 insertions(+), 38 deletions(-) diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index e0f42a78f..7f6cc4f21 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -159,9 +159,6 @@ class CircuitTermination(models.Model): def __unicode__(self): return u'{} (Side {})'.format(self.circuit, self.get_term_side_display()) - def get_parent_url(self): - return self.circuit.get_absolute_url() - def get_peer_termination(self): peer_side = 'Z' if self.term_side == 'A' else 'A' try: diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 4217ca673..a43bc175f 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -223,10 +223,12 @@ class CircuitTerminationEditView(PermissionRequiredMixin, ObjectEditView): def alter_obj(self, obj, args, kwargs): if 'circuit' in kwargs: - circuit = get_object_or_404(Circuit, pk=kwargs['circuit']) - obj.circuit = circuit + obj.circuit = get_object_or_404(Circuit, pk=kwargs['circuit']) return obj + def get_return_url(self, obj): + return obj.circuit.get_absolute_url() + class CircuitTerminationDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'circuits.delete_circuittermination' diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 030de3436..6274f3a53 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -985,9 +985,6 @@ class ConsolePort(models.Model): def __unicode__(self): return self.name - def get_parent_url(self): - return self.device.get_absolute_url() - # Used for connections export def to_csv(self): return csv_format([ @@ -1029,9 +1026,6 @@ class ConsoleServerPort(models.Model): def __unicode__(self): return self.name - def get_parent_url(self): - return self.device.get_absolute_url() - class PowerPort(models.Model): """ @@ -1050,9 +1044,6 @@ class PowerPort(models.Model): def __unicode__(self): return self.name - def get_parent_url(self): - return self.device.get_absolute_url() - # Used for connections export def csv_format(self): return ','.join([ @@ -1088,9 +1079,6 @@ class PowerOutlet(models.Model): def __unicode__(self): return self.name - def get_parent_url(self): - return self.device.get_absolute_url() - class Interface(models.Model): """ @@ -1114,9 +1102,6 @@ class Interface(models.Model): def __unicode__(self): return self.name - def get_parent_url(self): - return self.device.get_absolute_url() - def clean(self): if self.form_factor == IFACE_FF_VIRTUAL and self.is_connected: @@ -1207,9 +1192,6 @@ class DeviceBay(models.Model): def __unicode__(self): return u'{} - {}'.format(self.device.name, self.name) - def get_parent_url(self): - return self.device.get_absolute_url() - def clean(self): # Validate that the parent Device can have DeviceBays @@ -1243,6 +1225,3 @@ class Module(models.Model): def __unicode__(self): return self.name - - def get_parent_url(self): - return reverse('dcim:device_inventory', args=[self.device.pk]) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index aac26821e..cedc8d4c4 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -1506,10 +1506,12 @@ class ModuleEditView(PermissionRequiredMixin, ObjectEditView): def alter_obj(self, obj, args, kwargs): if 'device' in kwargs: - device = get_object_or_404(Device, pk=kwargs['device']) - obj.device = device + obj.device = get_object_or_404(Device, pk=kwargs['device']) return obj + def get_return_url(self, obj): + return obj.device.get_absolute_url() + class ModuleDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'dcim.delete_module' diff --git a/netbox/ipam/models.py b/netbox/ipam/models.py index 37501735e..c8afc6402 100644 --- a/netbox/ipam/models.py +++ b/netbox/ipam/models.py @@ -578,6 +578,3 @@ class Service(CreatedUpdatedModel): def __unicode__(self): return u'{} ({}/{})'.format(self.name, self.port, self.get_protocol_display()) - - def get_parent_url(self): - return self.device.get_absolute_url() diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index e19e6c486..7dcf03fd9 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -760,6 +760,9 @@ class ServiceEditView(PermissionRequiredMixin, ObjectEditView): obj.device = get_object_or_404(Device, pk=kwargs['device']) return obj + def get_return_url(self, obj): + return obj.device.get_absolute_url() + class ServiceDeleteView(PermissionRequiredMixin, ObjectDeleteView): permission_required = 'ipam.delete_service' diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index 18b536d94..a158d701f 100644 --- a/netbox/utilities/views.py +++ b/netbox/utilities/views.py @@ -150,13 +150,13 @@ class ObjectEditView(View): # given some parameter from the request URI. return obj - def get_redirect_url(self, obj): + def get_return_url(self, obj): # Determine where to redirect the user after updating an object (or aborting an update). if obj.pk and self.use_obj_view and hasattr(obj, 'get_absolute_url'): return obj.get_absolute_url() - if obj and self.use_obj_view and hasattr(obj, 'get_parent_url'): - return obj.get_parent_url() - return reverse(self.obj_list_url) + if self.obj_list_url is not None: + return reverse(self.obj_list_url) + return reverse('home') def get(self, request, *args, **kwargs): @@ -169,7 +169,7 @@ class ObjectEditView(View): 'obj': obj, 'obj_type': self.model._meta.verbose_name, 'form': form, - 'cancel_url': self.get_redirect_url(obj), + 'cancel_url': self.get_return_url(obj), }) def post(self, request, *args, **kwargs): @@ -200,13 +200,13 @@ class ObjectEditView(View): if '_addanother' in request.POST: return redirect(request.path) - return redirect(self.get_redirect_url(obj)) + return redirect(self.get_return_url(obj)) return render(request, self.template_name, { 'obj': obj, 'obj_type': self.model._meta.verbose_name, 'form': form, - 'cancel_url': self.get_redirect_url(obj), + 'cancel_url': self.get_return_url(obj), })