Просмотр исходного кода

Update view and permission names for VMInterface

Jeremy Stretch 5 лет назад
Родитель
Сommit
25d6bbf659

+ 1 - 1
netbox/ipam/tables.py

@@ -168,7 +168,7 @@ VLAN_MEMBER_UNTAGGED = """
 
 VLAN_MEMBER_ACTIONS = """
 {% if perms.dcim.change_interface %}
-    <a href="{% if record.device %}{% url 'dcim:interface_edit' pk=record.pk %}{% else %}{% url 'virtualization:interface_edit' pk=record.pk %}{% endif %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil"></i></a>
+    <a href="{% if record.device %}{% url 'dcim:interface_edit' pk=record.pk %}{% else %}{% url 'virtualization:vminterface_edit' pk=record.pk %}{% endif %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil"></i></a>
 {% endif %}
 """
 

+ 2 - 2
netbox/templates/dcim/inc/interface.html

@@ -166,7 +166,7 @@
                     </ul>
                 </span>
             {% endif %}
-            <a href="{% if iface.device_id %}{% 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">
+            <a href="{% if iface.device_id %}{% url 'dcim:interface_edit' pk=iface.pk %}{% else %}{% url 'virtualization:vminterface_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>
             </a>
         {% endif %}
@@ -176,7 +176,7 @@
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
             {% else %}
-                <a href="{% if iface.device_id %}{% 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">
+                <a href="{% if iface.device_id %}{% url 'dcim:interface_delete' pk=iface.pk %}{% else %}{% url 'virtualization:vminterface_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>
                 </a>
             {% endif %}

+ 2 - 2
netbox/templates/dcim/interface.html

@@ -17,12 +17,12 @@
     </div>
     <div class="pull-right noprint">
         {% if perms.dcim.change_interface %}
-            <a href="{% if interface.device %}{% url 'dcim:interface_edit' pk=interface.pk %}{% else %}{% url 'virtualization:interface_edit' pk=interface.pk %}{% endif %}" class="btn btn-warning">
+            <a href="{% if interface.device %}{% url 'dcim:interface_edit' pk=interface.pk %}{% else %}{% url 'virtualization:vminterface_edit' pk=interface.pk %}{% endif %}" class="btn btn-warning">
                 <span class="fa fa-pencil" aria-hidden="true"></span> Edit
             </a>
         {% endif %}
         {% if perms.dcim.delete_interface %}
-            <a href="{% if interface.device %}{% url 'dcim:interface_delete' pk=interface.pk %}{% else %}{% url 'virtualization:interface_delete' pk=interface.pk %}{% endif %}" class="btn btn-danger">
+            <a href="{% if interface.device %}{% url 'dcim:interface_delete' pk=interface.pk %}{% else %}{% url 'virtualization:vminterface_delete' pk=interface.pk %}{% endif %}" class="btn btn-danger">
                 <span class="fa fa-trash" aria-hidden="true"></span> Delete
             </a>
         {% endif %}

+ 2 - 2
netbox/templates/virtualization/interface.html

@@ -17,12 +17,12 @@
     </div>
     <div class="pull-right noprint">
         {% if perms.dcim.change_interface %}
-            <a href="{% if interface.device %}{% url 'dcim:interface_edit' pk=interface.pk %}{% else %}{% url 'virtualization:interface_edit' pk=interface.pk %}{% endif %}" class="btn btn-warning">
+            <a href="{% if interface.device %}{% url 'dcim:interface_edit' pk=interface.pk %}{% else %}{% url 'virtualization:vminterface_edit' pk=interface.pk %}{% endif %}" class="btn btn-warning">
                 <span class="fa fa-pencil" aria-hidden="true"></span> Edit
             </a>
         {% endif %}
         {% if perms.dcim.delete_interface %}
-            <a href="{% if interface.device %}{% url 'dcim:interface_delete' pk=interface.pk %}{% else %}{% url 'virtualization:interface_delete' pk=interface.pk %}{% endif %}" class="btn btn-danger">
+            <a href="{% if interface.device %}{% url 'dcim:interface_delete' pk=interface.pk %}{% else %}{% url 'virtualization:vminterface_delete' pk=interface.pk %}{% endif %}" class="btn btn-danger">
                 <span class="fa fa-trash" aria-hidden="true"></span> Delete
             </a>
         {% endif %}

+ 1 - 1
netbox/templates/virtualization/interface_edit.html

@@ -21,7 +21,7 @@
 {% block buttons %}
     {% if obj.pk %}
         <button type="submit" name="_update" class="btn btn-primary">Update</button>
-        <button type="submit" formaction="?return_url={% url 'virtualization:interface_edit' pk=obj.pk %}" class="btn btn-primary">Update and Continue Editing</button>
+        <button type="submit" formaction="?return_url={% url 'virtualization:vminterface_edit' pk=obj.pk %}" class="btn btn-primary">Update and Continue Editing</button>
     {% else %}
         <button type="submit" name="_create" class="btn btn-primary">Create</button>
         <button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>

+ 3 - 3
netbox/templates/virtualization/virtualmachine.html

@@ -297,18 +297,18 @@
                         <button type="submit" name="_rename" formaction="{% url 'dcim:interface_bulk_rename' %}?return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-warning btn-xs">
                             <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Rename
                         </button>
-                        <button type="submit" name="_edit" formaction="{% url 'virtualization:interface_bulk_edit' %}?return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-warning btn-xs">
+                        <button type="submit" name="_edit" formaction="{% url 'virtualization:vminterface_bulk_edit' %}?return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-warning btn-xs">
                             <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit
                         </button>
                     {% endif %}
                     {% if interfaces and perms.dcim.delete_interface %}
-                        <button type="submit" name="_delete" formaction="{% url 'virtualization:interface_bulk_delete' %}?return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-danger btn-xs">
+                        <button type="submit" name="_delete" formaction="{% url 'virtualization:vminterface_bulk_delete' %}?return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-danger btn-xs">
                             <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete
                         </button>
                     {% endif %}
                     {% if perms.dcim.add_interface %}
                         <div class="pull-right">
-                            <a href="{% url 'virtualization:interface_add' %}?virtual_machine={{ virtualmachine.pk }}&return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-primary btn-xs">
+                            <a href="{% url 'virtualization:vminterface_add' %}?virtual_machine={{ virtualmachine.pk }}&return_url={{ virtualmachine.get_absolute_url }}" class="btn btn-primary btn-xs">
                                 <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add interfaces
                             </a>
                         </div>

+ 1 - 1
netbox/templates/virtualization/virtualmachine_list.html

@@ -7,7 +7,7 @@
                 <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add Components <span class="caret"></span>
             </button>
             <ul class="dropdown-menu">
-                {% if perms.dcim.add_interface %}<li><a href="{% url 'virtualization:virtualmachine_bulk_add_interface' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Interfaces</a></li>{% endif %}
+                {% if perms.dcim.add_interface %}<li><a href="{% url 'virtualization:virtualmachine_bulk_add_vminterface' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="formaction">Interfaces</a></li>{% endif %}
             </ul>
         </div>
     {% endif %}

+ 1 - 1
netbox/virtualization/api/nested_serializers.py

@@ -57,7 +57,7 @@ class NestedVirtualMachineSerializer(WritableNestedSerializer):
 
 
 class NestedInterfaceSerializer(WritableNestedSerializer):
-    url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:interface-detail')
+    url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:vminterface-detail')
     virtual_machine = NestedVirtualMachineSerializer(read_only=True)
 
     class Meta:

+ 1 - 1
netbox/virtualization/models.py

@@ -431,7 +431,7 @@ class VMInterface(BaseInterface):
         return self.name
 
     def get_absolute_url(self):
-        return reverse('virtualization:interface', kwargs={'pk': self.pk})
+        return reverse('virtualization:vminterface', kwargs={'pk': self.pk})
 
     def to_csv(self):
         return (

+ 18 - 18
netbox/virtualization/tests/test_api.py

@@ -221,22 +221,22 @@ class InterfaceTest(APITestCase):
         self.vlan3 = VLAN.objects.create(name="Test VLAN 3", vid=3)
 
     def test_get_interface(self):
-        url = reverse('virtualization-api:interface-detail', kwargs={'pk': self.interface1.pk})
-        self.add_permissions('virtualization.view_interface')
+        url = reverse('virtualization-api:vminterface-detail', kwargs={'pk': self.interface1.pk})
+        self.add_permissions('virtualization.view_vminterface')
 
         response = self.client.get(url, **self.header)
         self.assertEqual(response.data['name'], self.interface1.name)
 
     def test_list_interfaces(self):
-        url = reverse('virtualization-api:interface-list')
-        self.add_permissions('virtualization.view_interface')
+        url = reverse('virtualization-api:vminterface-list')
+        self.add_permissions('virtualization.view_vminterface')
 
         response = self.client.get(url, **self.header)
         self.assertEqual(response.data['count'], 3)
 
     def test_list_interfaces_brief(self):
-        url = reverse('virtualization-api:interface-list')
-        self.add_permissions('virtualization.view_interface')
+        url = reverse('virtualization-api:vminterface-list')
+        self.add_permissions('virtualization.view_vminterface')
 
         response = self.client.get('{}?brief=1'.format(url), **self.header)
         self.assertEqual(
@@ -249,8 +249,8 @@ class InterfaceTest(APITestCase):
             'virtual_machine': self.virtualmachine.pk,
             'name': 'Test Interface 4',
         }
-        url = reverse('virtualization-api:interface-list')
-        self.add_permissions('virtualization.add_interface')
+        url = reverse('virtualization-api:vminterface-list')
+        self.add_permissions('virtualization.add_vminterface')
 
         response = self.client.post(url, data, format='json', **self.header)
         self.assertHttpStatus(response, status.HTTP_201_CREATED)
@@ -267,8 +267,8 @@ class InterfaceTest(APITestCase):
             'untagged_vlan': self.vlan3.id,
             'tagged_vlans': [self.vlan1.id, self.vlan2.id],
         }
-        url = reverse('virtualization-api:interface-list')
-        self.add_permissions('virtualization.add_interface')
+        url = reverse('virtualization-api:vminterface-list')
+        self.add_permissions('virtualization.add_vminterface')
 
         response = self.client.post(url, data, format='json', **self.header)
         self.assertHttpStatus(response, status.HTTP_201_CREATED)
@@ -293,8 +293,8 @@ class InterfaceTest(APITestCase):
                 'name': 'Test Interface 6',
             },
         ]
-        url = reverse('virtualization-api:interface-list')
-        self.add_permissions('virtualization.add_interface')
+        url = reverse('virtualization-api:vminterface-list')
+        self.add_permissions('virtualization.add_vminterface')
 
         response = self.client.post(url, data, format='json', **self.header)
         self.assertHttpStatus(response, status.HTTP_201_CREATED)
@@ -327,8 +327,8 @@ class InterfaceTest(APITestCase):
                 'tagged_vlans': [self.vlan1.id],
             },
         ]
-        url = reverse('virtualization-api:interface-list')
-        self.add_permissions('virtualization.add_interface')
+        url = reverse('virtualization-api:vminterface-list')
+        self.add_permissions('virtualization.add_vminterface')
 
         response = self.client.post(url, data, format='json', **self.header)
         self.assertHttpStatus(response, status.HTTP_201_CREATED)
@@ -343,8 +343,8 @@ class InterfaceTest(APITestCase):
             'virtual_machine': self.virtualmachine.pk,
             'name': 'Test Interface X',
         }
-        url = reverse('virtualization-api:interface-detail', kwargs={'pk': self.interface1.pk})
-        self.add_permissions('virtualization.change_interface')
+        url = reverse('virtualization-api:vminterface-detail', kwargs={'pk': self.interface1.pk})
+        self.add_permissions('virtualization.change_vminterface')
 
         response = self.client.put(url, data, format='json', **self.header)
         self.assertHttpStatus(response, status.HTTP_200_OK)
@@ -353,8 +353,8 @@ class InterfaceTest(APITestCase):
         self.assertEqual(interface1.name, data['name'])
 
     def test_delete_interface(self):
-        url = reverse('virtualization-api:interface-detail', kwargs={'pk': self.interface1.pk})
-        self.add_permissions('virtualization.delete_interface')
+        url = reverse('virtualization-api:vminterface-detail', kwargs={'pk': self.interface1.pk})
+        self.add_permissions('virtualization.delete_vminterface')
 
         response = self.client.delete(url, **self.header)
         self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT)

+ 7 - 7
netbox/virtualization/urls.py

@@ -51,12 +51,12 @@ urlpatterns = [
     path('virtual-machines/<int:virtualmachine>/services/assign/', ServiceEditView.as_view(), name='virtualmachine_service_assign'),
 
     # VM interfaces
-    path('interfaces/add/', views.InterfaceCreateView.as_view(), name='interface_add'),
-    path('interfaces/edit/', views.InterfaceBulkEditView.as_view(), name='interface_bulk_edit'),
-    path('interfaces/delete/', views.InterfaceBulkDeleteView.as_view(), name='interface_bulk_delete'),
-    path('interfaces/<int:pk>/', views.InterfaceView.as_view(), name='interface'),
-    path('interfaces/<int:pk>/edit/', views.InterfaceEditView.as_view(), name='interface_edit'),
-    path('interfaces/<int:pk>/delete/', views.InterfaceDeleteView.as_view(), name='interface_delete'),
-    path('virtual-machines/interfaces/add/', views.VirtualMachineBulkAddInterfaceView.as_view(), name='virtualmachine_bulk_add_interface'),
+    path('interfaces/add/', views.InterfaceCreateView.as_view(), name='vminterface_add'),
+    path('interfaces/edit/', views.InterfaceBulkEditView.as_view(), name='vminterface_bulk_edit'),
+    path('interfaces/delete/', views.InterfaceBulkDeleteView.as_view(), name='vminterface_bulk_delete'),
+    path('interfaces/<int:pk>/', views.InterfaceView.as_view(), name='vminterface'),
+    path('interfaces/<int:pk>/edit/', views.InterfaceEditView.as_view(), name='vminterface_edit'),
+    path('interfaces/<int:pk>/delete/', views.InterfaceDeleteView.as_view(), name='vminterface_delete'),
+    path('virtual-machines/interfaces/add/', views.VirtualMachineBulkAddInterfaceView.as_view(), name='virtualmachine_bulk_add_vminterface'),
 
 ]