Obsoleted ComponentEditView and ComponentDeleteView

This commit is contained in:
Jeremy Stretch 2017-12-15 15:57:49 -05:00
parent 67a30fdf91
commit 153409d37e
5 changed files with 45 additions and 54 deletions

View File

@ -1084,6 +1084,9 @@ class ConsolePort(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def get_absolute_url(self):
return self.device.get_absolute_url()
# Used for connections export # Used for connections export
def to_csv(self): def to_csv(self):
return csv_format([ return csv_format([
@ -1125,6 +1128,9 @@ class ConsoleServerPort(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def get_absolute_url(self):
return self.device.get_absolute_url()
def clean(self): def clean(self):
# Check that the parent device's DeviceType is a console server # Check that the parent device's DeviceType is a console server
@ -1161,6 +1167,9 @@ class PowerPort(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def get_absolute_url(self):
return self.device.get_absolute_url()
# Used for connections export # Used for connections export
def to_csv(self): def to_csv(self):
return csv_format([ return csv_format([
@ -1202,6 +1211,9 @@ class PowerOutlet(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def get_absolute_url(self):
return self.device.get_absolute_url()
def clean(self): def clean(self):
# Check that the parent device's DeviceType is a PDU # Check that the parent device's DeviceType is a PDU
@ -1281,6 +1293,9 @@ class Interface(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def get_absolute_url(self):
return self.parent.get_absolute_url()
def clean(self): def clean(self):
# Check that the parent device's DeviceType is a network device # Check that the parent device's DeviceType is a network device
@ -1443,6 +1458,9 @@ class DeviceBay(models.Model):
def __str__(self): def __str__(self):
return '{} - {}'.format(self.device.name, self.name) return '{} - {}'.format(self.device.name, self.name)
def get_absolute_url(self):
return self.device.get_absolute_url()
def clean(self): def clean(self):
# Validate that the parent Device can have DeviceBays # Validate that the parent Device can have DeviceBays
@ -1488,6 +1506,9 @@ class InventoryItem(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def get_absolute_url(self):
return self.device.get_absolute_url()
# #
# Virtual chassis # Virtual chassis

View File

@ -24,8 +24,8 @@ from ipam.models import Prefix, Service, VLAN
from utilities.forms import ConfirmationForm from utilities.forms import ConfirmationForm
from utilities.paginator import EnhancedPaginator from utilities.paginator import EnhancedPaginator
from utilities.views import ( from utilities.views import (
BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, ComponentDeleteView, BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, ObjectDeleteView,
ComponentEditView, ObjectDeleteView, ObjectEditView, ObjectListView, ObjectEditView, ObjectListView,
) )
from virtualization.models import VirtualMachine from virtualization.models import VirtualMachine
from . import filters, forms, tables from . import filters, forms, tables
@ -1098,17 +1098,15 @@ def consoleport_disconnect(request, pk):
}) })
class ConsolePortEditView(PermissionRequiredMixin, ComponentEditView): class ConsolePortEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_consoleport' permission_required = 'dcim.change_consoleport'
model = ConsolePort model = ConsolePort
parent_field = 'device'
model_form = forms.ConsolePortForm model_form = forms.ConsolePortForm
class ConsolePortDeleteView(PermissionRequiredMixin, ComponentDeleteView): class ConsolePortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_consoleport' permission_required = 'dcim.delete_consoleport'
model = ConsolePort model = ConsolePort
parent_field = 'device'
class ConsolePortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class ConsolePortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
@ -1218,17 +1216,15 @@ def consoleserverport_disconnect(request, pk):
}) })
class ConsoleServerPortEditView(PermissionRequiredMixin, ComponentEditView): class ConsoleServerPortEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_consoleserverport' permission_required = 'dcim.change_consoleserverport'
model = ConsoleServerPort model = ConsoleServerPort
parent_field = 'device'
model_form = forms.ConsoleServerPortForm model_form = forms.ConsoleServerPortForm
class ConsoleServerPortDeleteView(PermissionRequiredMixin, ComponentDeleteView): class ConsoleServerPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_consoleserverport' permission_required = 'dcim.delete_consoleserverport'
model = ConsoleServerPort model = ConsoleServerPort
parent_field = 'device'
class ConsoleServerPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView): class ConsoleServerPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
@ -1337,17 +1333,15 @@ def powerport_disconnect(request, pk):
}) })
class PowerPortEditView(PermissionRequiredMixin, ComponentEditView): class PowerPortEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_powerport' permission_required = 'dcim.change_powerport'
model = PowerPort model = PowerPort
parent_field = 'device'
model_form = forms.PowerPortForm model_form = forms.PowerPortForm
class PowerPortDeleteView(PermissionRequiredMixin, ComponentDeleteView): class PowerPortDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_powerport' permission_required = 'dcim.delete_powerport'
model = PowerPort model = PowerPort
parent_field = 'device'
class PowerPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): class PowerPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
@ -1457,17 +1451,15 @@ def poweroutlet_disconnect(request, pk):
}) })
class PowerOutletEditView(PermissionRequiredMixin, ComponentEditView): class PowerOutletEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_poweroutlet' permission_required = 'dcim.change_poweroutlet'
model = PowerOutlet model = PowerOutlet
parent_field = 'device'
model_form = forms.PowerOutletForm model_form = forms.PowerOutletForm
class PowerOutletDeleteView(PermissionRequiredMixin, ComponentDeleteView): class PowerOutletDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_poweroutlet' permission_required = 'dcim.delete_poweroutlet'
model = PowerOutlet model = PowerOutlet
parent_field = 'device'
class PowerOutletBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView): class PowerOutletBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
@ -1502,18 +1494,16 @@ class InterfaceCreateView(PermissionRequiredMixin, ComponentCreateView):
template_name = 'dcim/device_component_add.html' template_name = 'dcim/device_component_add.html'
class InterfaceEditView(PermissionRequiredMixin, ComponentEditView): class InterfaceEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_interface' permission_required = 'dcim.change_interface'
model = Interface model = Interface
parent_field = 'device'
model_form = forms.InterfaceForm model_form = forms.InterfaceForm
template_name = 'dcim/interface_edit.html' template_name = 'dcim/interface_edit.html'
class InterfaceDeleteView(PermissionRequiredMixin, ComponentDeleteView): class InterfaceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_interface' permission_required = 'dcim.delete_interface'
model = Interface model = Interface
parent_field = 'device'
class InterfaceBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView): class InterfaceBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
@ -1557,17 +1547,15 @@ class DeviceBayCreateView(PermissionRequiredMixin, ComponentCreateView):
template_name = 'dcim/device_component_add.html' template_name = 'dcim/device_component_add.html'
class DeviceBayEditView(PermissionRequiredMixin, ComponentEditView): class DeviceBayEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_devicebay' permission_required = 'dcim.change_devicebay'
model = DeviceBay model = DeviceBay
parent_field = 'device'
model_form = forms.DeviceBayForm model_form = forms.DeviceBayForm
class DeviceBayDeleteView(PermissionRequiredMixin, ComponentDeleteView): class DeviceBayDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_devicebay' permission_required = 'dcim.delete_devicebay'
model = DeviceBay model = DeviceBay
parent_field = 'device'
@permission_required('dcim.change_devicebay') @permission_required('dcim.change_devicebay')
@ -1835,10 +1823,9 @@ class InterfaceConnectionsListView(ObjectListView):
# Inventory items # Inventory items
# #
class InventoryItemEditView(PermissionRequiredMixin, ComponentEditView): class InventoryItemEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_inventoryitem' permission_required = 'dcim.change_inventoryitem'
model = InventoryItem model = InventoryItem
parent_field = 'device'
model_form = forms.InventoryItemForm model_form = forms.InventoryItemForm
def alter_obj(self, obj, request, url_args, url_kwargs): def alter_obj(self, obj, request, url_args, url_kwargs):
@ -1847,10 +1834,9 @@ class InventoryItemEditView(PermissionRequiredMixin, ComponentEditView):
return obj return obj
class InventoryItemDeleteView(PermissionRequiredMixin, ComponentDeleteView): class InventoryItemDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_inventoryitem' permission_required = 'dcim.delete_inventoryitem'
model = InventoryItem model = InventoryItem
parent_field = 'device'
# #

View File

@ -107,16 +107,16 @@
<button class="btn btn-warning btn-xs interface-toggle connected" disabled="disabled" title="Circuits cannot be marked as planned or connected"> <button class="btn btn-warning btn-xs interface-toggle connected" disabled="disabled" title="Circuits cannot be marked as planned or connected">
<i class="glyphicon glyphicon-ban-circle" aria-hidden="true"></i> <i class="glyphicon glyphicon-ban-circle" aria-hidden="true"></i>
</button> </button>
<a href="{% url 'circuits:circuittermination_edit' pk=iface.circuit_termination.pk %}" class="btn btn-danger btn-xs" title="Edit circuit termination"> <a href="{% url 'circuits:circuittermination_edit' pk=iface.circuit_termination.pk %}&return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs" title="Edit circuit termination">
<i class="glyphicon glyphicon-resize-full" aria-hidden="true"></i> <i class="glyphicon glyphicon-resize-full" aria-hidden="true"></i>
</a> </a>
{% else %} {% else %}
<a href="{% url 'dcim:interfaceconnection_add' pk=device.pk %}?interface_a={{ iface.pk }}" class="btn btn-success btn-xs" title="Connect"> <a href="{% url 'dcim:interfaceconnection_add' pk=device.pk %}?interface_a={{ iface.pk }}&return_url={{ device.get_absolute_url }}" class="btn btn-success btn-xs" title="Connect">
<i class="glyphicon glyphicon-resize-small" aria-hidden="true"></i> <i class="glyphicon glyphicon-resize-small" aria-hidden="true"></i>
</a> </a>
{% endif %} {% endif %}
{% endif %} {% endif %}
<a href="{% if iface.device %}{% url 'dcim:interface_edit' pk=iface.pk %}{% else %}{% url 'virtualization:interface_edit' pk=iface.pk %}{% endif %}" class="btn btn-info btn-xs" title="Edit interface"> <a href="{% if iface.device %}{% url 'dcim:interface_edit' pk=iface.pk %}{% else %}{% url 'virtualization:interface_edit' pk=iface.pk %}{% endif %}?return_url={{ device.get_absolute_url }}" class="btn btn-info btn-xs" title="Edit interface">
<i class="glyphicon glyphicon-pencil" aria-hidden="true"></i> <i class="glyphicon glyphicon-pencil" aria-hidden="true"></i>
</a> </a>
{% endif %} {% endif %}
@ -126,7 +126,7 @@
<i class="glyphicon glyphicon-trash" aria-hidden="true"></i> <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
</button> </button>
{% else %} {% else %}
<a href="{% if iface.device %}{% url 'dcim:interface_delete' pk=iface.pk %}{% else %}{% url 'virtualization:interface_delete' pk=iface.pk %}{% endif %}" class="btn btn-danger btn-xs" title="Delete interface"> <a href="{% if iface.device %}{% url 'dcim:interface_delete' pk=iface.pk %}{% else %}{% url 'virtualization:interface_delete' pk=iface.pk %}{% endif %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs" title="Delete interface">
<i class="glyphicon glyphicon-trash" aria-hidden="true"></i> <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
</a> </a>
{% endif %} {% endif %}

View File

@ -802,20 +802,6 @@ class ComponentCreateView(View):
}) })
class ComponentEditView(ObjectEditView):
parent_field = None
def get_return_url(self, request, obj):
return getattr(obj, self.parent_field).get_absolute_url()
class ComponentDeleteView(ObjectDeleteView):
parent_field = None
def get_return_url(self, request, obj):
return getattr(obj, self.parent_field).get_absolute_url()
class BulkComponentCreateView(View): class BulkComponentCreateView(View):
""" """
Add one or more components (e.g. interfaces, console ports, etc.) to a set of Devices or VirtualMachines. Add one or more components (e.g. interfaces, console ports, etc.) to a set of Devices or VirtualMachines.

View File

@ -11,8 +11,8 @@ from dcim.models import Device, Interface
from dcim.tables import DeviceTable from dcim.tables import DeviceTable
from ipam.models import Service from ipam.models import Service
from utilities.views import ( from utilities.views import (
BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, ComponentDeleteView, BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, ObjectDeleteView,
ComponentEditView, ObjectDeleteView, ObjectEditView, ObjectListView, ObjectEditView, ObjectListView,
) )
from . import filters, forms, tables from . import filters, forms, tables
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
@ -331,17 +331,15 @@ class InterfaceCreateView(PermissionRequiredMixin, ComponentCreateView):
template_name = 'virtualization/virtualmachine_component_add.html' template_name = 'virtualization/virtualmachine_component_add.html'
class InterfaceEditView(PermissionRequiredMixin, ComponentEditView): class InterfaceEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_interface' permission_required = 'dcim.change_interface'
model = Interface model = Interface
parent_field = 'virtual_machine'
model_form = forms.InterfaceForm model_form = forms.InterfaceForm
class InterfaceDeleteView(PermissionRequiredMixin, ComponentDeleteView): class InterfaceDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_interface' permission_required = 'dcim.delete_interface'
model = Interface model = Interface
parent_field = 'virtual_machine'
class InterfaceBulkEditView(PermissionRequiredMixin, BulkEditView): class InterfaceBulkEditView(PermissionRequiredMixin, BulkEditView):