Browse Source

Ditched get_parent_url() model method in favor of overrideable get_return_url() view method

Jeremy Stretch 8 years ago
parent
commit
cdccc3a47f

+ 0 - 3
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:

+ 4 - 2
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'

+ 0 - 21
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])

+ 4 - 2
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'

+ 0 - 3
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()

+ 3 - 0
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'

+ 7 - 7
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),
         })