diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 15b2dd6be..f85bcb327 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -1273,4 +1273,4 @@ class ModuleForm(forms.ModelForm, BootstrapMixin): class Meta: model = Module - fields = ['name', 'part_id', 'serial'] + fields = ['name', 'manufacturer', 'part_id', 'serial'] diff --git a/netbox/dcim/migrations/0016_module_add_manufacturer.py b/netbox/dcim/migrations/0016_module_add_manufacturer.py new file mode 100644 index 000000000..6a2264a83 --- /dev/null +++ b/netbox/dcim/migrations/0016_module_add_manufacturer.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.8 on 2016-08-10 13:45 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0015_rack_add_u_height_validator'), + ] + + operations = [ + migrations.AddField( + model_name='module', + name='manufacturer', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='modules', to='dcim.Manufacturer'), + ), + ] diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index f15af2b19..b00a92d83 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -1097,6 +1097,8 @@ class Module(models.Model): device = models.ForeignKey('Device', related_name='modules', on_delete=models.CASCADE) parent = models.ForeignKey('self', related_name='submodules', blank=True, null=True, on_delete=models.CASCADE) name = models.CharField(max_length=50, verbose_name='Name') + manufacturer = models.ForeignKey('Manufacturer', related_name='modules', blank=True, null=True, + on_delete=models.PROTECT) 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) discovered = models.BooleanField(default=False, verbose_name='Discovered') diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 928c11f51..ffffc80a2 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -680,7 +680,8 @@ class DeviceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): def device_inventory(request, pk): device = get_object_or_404(Device, pk=pk) - modules = Module.objects.filter(device=device, parent=None).prefetch_related('submodules') + modules = Module.objects.filter(device=device, parent=None).select_related('manufacturer')\ + .prefetch_related('submodules') return render(request, 'dcim/device_inventory.html', { 'device': device, diff --git a/netbox/templates/dcim/device_inventory.html b/netbox/templates/dcim/device_inventory.html index bf33b1b74..a867d9eb3 100644 --- a/netbox/templates/dcim/device_inventory.html +++ b/netbox/templates/dcim/device_inventory.html @@ -32,6 +32,7 @@ Module + Manufacturer Part Number Serial Number @@ -42,6 +43,7 @@ {{ m.name }} {% if not m.discovered %}{% endif %} + {{ m.manufacturer|default:'' }} {{ m.part_id }} {{ m.serial }} @@ -57,6 +59,7 @@ {{ m2.name }} {% if not m2.discovered %}{% endif %} + {{ m2.manufacturer|default:'' }} {{ m2.part_id }} {{ m2.serial }} @@ -72,6 +75,7 @@ {{ m3.name }} {% if not m3.discovered %}{% endif %} + {{ m3.manufacturer|default:'' }} {{ m3.part_id }} {{ m3.serial }} @@ -87,6 +91,7 @@ {{ m4.name }} {% if not m4.discovered %}{% endif %} + {{ m4.manufacturer|default:'' }} {{ m4.part_id }} {{ m4.serial }}