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

Closes #1692: Allow assigment of inventory items to parent items in web UI

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

+ 1 - 0
docs/release-notes/version-2.10.md

@@ -6,6 +6,7 @@
 
 ### New Features
 
+* [#1692](https://github.com/netbox-community/netbox/issues/1692) - Allow assigment of inventory items to parent items in web UI
 * [#5146](https://github.com/netbox-community/netbox/issues/5146) - Add custom fields support for cables, power panels, rack reservations, and virtual chassis
 
 ### Other Changes

+ 18 - 3
netbox/dcim/forms.py

@@ -3284,6 +3284,13 @@ class InventoryItemForm(BootstrapMixin, forms.ModelForm):
         queryset=Device.objects.all(),
         display_field='display_name'
     )
+    parent = DynamicModelChoiceField(
+        queryset=InventoryItem.objects.all(),
+        required=False,
+        query_params={
+            'device_id': '$device'
+        }
+    )
     manufacturer = DynamicModelChoiceField(
         queryset=Manufacturer.objects.all(),
         required=False
@@ -3296,7 +3303,8 @@ class InventoryItemForm(BootstrapMixin, forms.ModelForm):
     class Meta:
         model = InventoryItem
         fields = [
-            'name', 'label', 'device', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description', 'tags',
+            'device', 'parent', 'name', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description',
+            'tags',
         ]
 
 
@@ -3305,6 +3313,13 @@ class InventoryItemCreateForm(ComponentCreateForm):
         queryset=Manufacturer.objects.all(),
         required=False
     )
+    parent = DynamicModelChoiceField(
+        queryset=InventoryItem.objects.all(),
+        required=False,
+        query_params={
+            'device_id': '$device'
+        }
+    )
     part_id = forms.CharField(
         max_length=50,
         required=False,
@@ -3319,8 +3334,8 @@ class InventoryItemCreateForm(ComponentCreateForm):
         required=False,
     )
     field_order = (
-        'device', 'name_pattern', 'label_pattern', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description',
-        'tags',
+        'device', 'parent', 'name_pattern', 'label_pattern', 'manufacturer', 'part_id', 'serial', 'asset_tag',
+        'description', 'tags',
     )
 
 

+ 1 - 1
netbox/templates/dcim/inc/inventoryitem.html

@@ -31,7 +31,7 @@
     <td>{{ item.description|placeholder }}</td>
     <td class="text-right noprint">
         {% if perms.dcim.change_inventoryitem %}
-            <a href="{% url 'dcim:inventoryitem_edit' pk=item.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
+            <a href="{% url 'dcim:inventoryitem_edit' pk=item.pk %}?return_url={% url 'dcim:device_inventory' pk=device.pk %}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
         {% endif %}
         {% if perms.dcim.delete_inventoryitem %}
             <a href="{% url 'dcim:inventoryitem_delete' pk=item.pk %}?return_url={% url 'dcim:device_inventory' pk=device.pk %}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>