Browse Source

Closes #1121: Added asset_tag and description fields to inventory items

Jeremy Stretch 7 years ago
parent
commit
5940feb64b

+ 8 - 2
netbox/dcim/api/serializers.py

@@ -669,14 +669,20 @@ class InventoryItemSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = InventoryItem
-        fields = ['id', 'device', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
+        fields = [
+            'id', 'device', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered',
+            'description',
+        ]
 
 
 class WritableInventoryItemSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = InventoryItem
-        fields = ['id', 'device', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
+        fields = [
+            'id', 'device', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'discovered',
+            'description',
+        ]
 
 
 #

+ 1 - 1
netbox/dcim/filters.py

@@ -599,7 +599,7 @@ class InventoryItemFilter(DeviceComponentFilterSet):
 
     class Meta:
         model = InventoryItem
-        fields = ['name', 'part_id', 'serial', 'discovered']
+        fields = ['name', 'part_id', 'serial', 'asset_tag', 'discovered']
 
 
 class ConsoleConnectionFilter(django_filters.FilterSet):

+ 1 - 1
netbox/dcim/forms.py

@@ -1765,4 +1765,4 @@ class InventoryItemForm(BootstrapMixin, forms.ModelForm):
 
     class Meta:
         model = InventoryItem
-        fields = ['name', 'manufacturer', 'part_id', 'serial']
+        fields = ['name', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description']

+ 26 - 0
netbox/dcim/migrations/0040_inventoryitem_add_asset_tag_description.py

@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2017-06-23 20:44
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import utilities.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dcim', '0039_interface_add_enabled_mtu'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='inventoryitem',
+            name='asset_tag',
+            field=utilities.fields.NullableCharField(blank=True, help_text='A unique tag used to identify this item', max_length=50, null=True, unique=True, verbose_name='Asset tag'),
+        ),
+        migrations.AddField(
+            model_name='inventoryitem',
+            name='description',
+            field=models.CharField(blank=True, max_length=100),
+        ),
+    ]

+ 9 - 2
netbox/dcim/models.py

@@ -1306,11 +1306,18 @@ class InventoryItem(models.Model):
     device = models.ForeignKey('Device', related_name='inventory_items', on_delete=models.CASCADE)
     parent = models.ForeignKey('self', related_name='child_items', blank=True, null=True, on_delete=models.CASCADE)
     name = models.CharField(max_length=50, verbose_name='Name')
-    manufacturer = models.ForeignKey('Manufacturer', related_name='inventory_items', blank=True, null=True,
-                                     on_delete=models.PROTECT)
+    manufacturer = models.ForeignKey(
+        'Manufacturer', models.PROTECT, related_name='inventory_items', blank=True, null=True
+    )
     part_id = models.CharField(max_length=50, verbose_name='Part ID', blank=True)
     serial = models.CharField(max_length=50, verbose_name='Serial number', blank=True)
+    asset_tag = NullableCharField(
+        max_length=50, blank=True, null=True, unique=True, verbose_name='Asset tag',
+        help_text='A unique tag used to identify this item'
+    )
     discovered = models.BooleanField(default=False, verbose_name='Discovered')
+    description = models.CharField(max_length=100, blank=True)
+
 
     class Meta:
         ordering = ['device__id', 'parent__id', 'name']

+ 2 - 0
netbox/templates/dcim/device_inventory.html

@@ -51,6 +51,8 @@
                         <th>Manufacturer</th>
                         <th>Part Number</th>
                         <th>Serial Number</th>
+                        <th>Asset Tag</th>
+                        <th>Description</th>
                         <th></th>
                     </tr>
                 </thead>

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

@@ -1,9 +1,11 @@
 <tr>
     <td style="padding-left: {{ indent|add:5 }}px">{{ item.name }}</td>
     <td>{% if not item.discovered %}<i class="fa fa-asterisk" title="Manually created"></i>{% endif %}</td>
-    <td>{{ item.manufacturer|default:'' }}</td>
+    <td>{{ item.manufacturer|default:"" }}</td>
     <td>{{ item.part_id }}</td>
     <td>{{ item.serial }}</td>
+    <td>{{ item.asset_tag|default:"" }}</td>
+    <td>{{ item.description }}</td>
     <td class="text-right">
         {% 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>