mirror of
https://github.com/Nebucatnetzer/network_inventory.git
synced 2024-06-26 00:59:10 +02:00
add HardwareModel to the device app
devices like computers etc. usually have a hardware model/type. E.g. Dell Precision 5530. In order to use the same name consistently we have the option to select the model name from a drop down.
This commit is contained in:
parent
e450ee755f
commit
441fda2e1f
|
@ -7,6 +7,7 @@ class ComputersTable(tables.Table):
|
||||||
serialnumber = tables.Column()
|
serialnumber = tables.Column()
|
||||||
owner = tables.Column()
|
owner = tables.Column()
|
||||||
manufacturer = tables.Column()
|
manufacturer = tables.Column()
|
||||||
|
model = tables.Column()
|
||||||
location = tables.Column()
|
location = tables.Column()
|
||||||
user = tables.Column('User', linkify=True)
|
user = tables.Column('User', linkify=True)
|
||||||
installation_date = tables.Column()
|
installation_date = tables.Column()
|
||||||
|
|
|
@ -7,6 +7,7 @@ from .models import (
|
||||||
DeviceCategory,
|
DeviceCategory,
|
||||||
DeviceInNet,
|
DeviceInNet,
|
||||||
DeviceManufacturer,
|
DeviceManufacturer,
|
||||||
|
HardwareModel,
|
||||||
Warranty,
|
Warranty,
|
||||||
WarrantyType
|
WarrantyType
|
||||||
)
|
)
|
||||||
|
@ -28,6 +29,14 @@ class DeviceManufacturerAdmin(admin.ModelAdmin):
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
class HardwareModelAdmin(admin.ModelAdmin):
|
||||||
|
def get_model_perms(self, request):
|
||||||
|
"""
|
||||||
|
Return empty perms dict thus hiding the model from admin index.
|
||||||
|
"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
class DeviceInNetInline(nested_admin.NestedStackedInline):
|
class DeviceInNetInline(nested_admin.NestedStackedInline):
|
||||||
model = DeviceInNet
|
model = DeviceInNet
|
||||||
extra = 0
|
extra = 0
|
||||||
|
@ -47,5 +56,6 @@ admin.site.register(Device)
|
||||||
admin.site.register(DeviceCategory, DeviceCategoryAdmin)
|
admin.site.register(DeviceCategory, DeviceCategoryAdmin)
|
||||||
admin.site.register(DeviceInNet)
|
admin.site.register(DeviceInNet)
|
||||||
admin.site.register(DeviceManufacturer, DeviceManufacturerAdmin)
|
admin.site.register(DeviceManufacturer, DeviceManufacturerAdmin)
|
||||||
|
admin.site.register(HardwareModel, HardwareModelAdmin)
|
||||||
admin.site.register(Warranty)
|
admin.site.register(Warranty)
|
||||||
admin.site.register(WarrantyType, WarrantyTypeAdmin)
|
admin.site.register(WarrantyType, WarrantyTypeAdmin)
|
||||||
|
|
|
@ -5,4 +5,5 @@ from .device import (
|
||||||
DeviceCategory,
|
DeviceCategory,
|
||||||
DeviceInNet,
|
DeviceInNet,
|
||||||
DeviceManufacturer,
|
DeviceManufacturer,
|
||||||
|
HardwareModel,
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,16 +17,28 @@ class DeviceCategory(Category):
|
||||||
verbose_name_plural = "Device Categories"
|
verbose_name_plural = "Device Categories"
|
||||||
|
|
||||||
|
|
||||||
|
class HardwareModel(models.Model):
|
||||||
|
name = models.CharField(max_length=50)
|
||||||
|
manufacturer = models.ForeignKey(DeviceManufacturer,
|
||||||
|
on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class Device(models.Model):
|
class Device(models.Model):
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
description = models.TextField(blank=True)
|
description = models.TextField(blank=True)
|
||||||
serialnumber = models.CharField(max_length=50, blank=True)
|
serialnumber = models.CharField(max_length=50, blank=True)
|
||||||
category = models.ForeignKey(DeviceCategory, on_delete=models.SET_NULL,
|
category = models.ForeignKey(DeviceCategory, on_delete=models.SET_NULL,
|
||||||
null=True, blank=True)
|
null=True, blank=True)
|
||||||
owner = models.ForeignKey(Owner, on_delete=models.SET_NULL, null=True, blank=True)
|
owner = models.ForeignKey(Owner, on_delete=models.SET_NULL, null=True,
|
||||||
|
blank=True)
|
||||||
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
|
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
|
||||||
manufacturer = models.ForeignKey(DeviceManufacturer, models.SET_NULL,
|
manufacturer = models.ForeignKey(DeviceManufacturer, models.SET_NULL,
|
||||||
null=True, blank=True)
|
null=True, blank=True)
|
||||||
|
model = models.ForeignKey(HardwareModel, models.SET_NULL, null=True,
|
||||||
|
blank=True)
|
||||||
location = models.ForeignKey(Location, models.SET_NULL, null=True,
|
location = models.ForeignKey(Location, models.SET_NULL, null=True,
|
||||||
blank=True)
|
blank=True)
|
||||||
user = models.ForeignKey(User, models.SET_NULL, null=True, blank=True)
|
user = models.ForeignKey(User, models.SET_NULL, null=True, blank=True)
|
||||||
|
|
|
@ -28,6 +28,11 @@
|
||||||
<th><b>Manufacturer:</b></th>
|
<th><b>Manufacturer:</b></th>
|
||||||
<td>{{ device.manufacturer }}</td>
|
<td>{{ device.manufacturer }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><b>Model:</b></th>
|
||||||
|
<td>{{ device.model }}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th><b>Location:</b></th>
|
<th><b>Location:</b></th>
|
||||||
<td>{{ device.location }}</td>
|
<td>{{ device.location }}</td>
|
||||||
|
|
|
@ -16,6 +16,7 @@ def test_device_detail_view_not_logged_in():
|
||||||
def test_device_detail_view(create_admin_user):
|
def test_device_detail_view(create_admin_user):
|
||||||
fixture = create_admin_user()
|
fixture = create_admin_user()
|
||||||
mixer.blend('devices.DeviceCategory')
|
mixer.blend('devices.DeviceCategory')
|
||||||
|
mixer.blend('devices.HardwareModel')
|
||||||
mixer.blend('customers.Owner')
|
mixer.blend('customers.Owner')
|
||||||
mixer.blend('customers.Location')
|
mixer.blend('customers.Location')
|
||||||
device = mixer.blend('devices.Device',
|
device = mixer.blend('devices.Device',
|
||||||
|
@ -23,6 +24,7 @@ def test_device_detail_view(create_admin_user):
|
||||||
owner=mixer.SELECT,
|
owner=mixer.SELECT,
|
||||||
category=mixer.SELECT,
|
category=mixer.SELECT,
|
||||||
manufacturer=mixer.SELECT,
|
manufacturer=mixer.SELECT,
|
||||||
|
hardware_model=mixer.SELECT,
|
||||||
location=mixer.SELECT)
|
location=mixer.SELECT)
|
||||||
client = Client()
|
client = Client()
|
||||||
client.login(username="novartis-admin", password="password")
|
client.login(username="novartis-admin", password="password")
|
||||||
|
@ -34,6 +36,7 @@ def test_device_detail_view(create_admin_user):
|
||||||
and helper.in_content(response, device.owner)
|
and helper.in_content(response, device.owner)
|
||||||
and helper.in_content(response, device.customer)
|
and helper.in_content(response, device.customer)
|
||||||
and helper.in_content(response, device.manufacturer)
|
and helper.in_content(response, device.manufacturer)
|
||||||
|
and helper.in_content(response, device.hardware_model)
|
||||||
and helper.in_content(response, device.location))
|
and helper.in_content(response, device.location))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user