network_inventory/network_inventory/inventory/models.py

265 lines
6.3 KiB
Python
Raw Normal View History

2017-12-22 17:02:24 +01:00
from django.db import models
class Device(models.Model):
name = models.CharField(max_length=50)
description = models.TextField()
def __str__(self):
return self.name
class GeneralDevice(Device):
def __str__(self):
return self.name
2017-12-22 17:02:24 +01:00
class HoursInDay(models.Model):
name = models.IntegerField()
def __str__(self):
return str(self.name)
class Meta:
verbose_name_plural = "Hours"
ordering = ['name']
class MinutesInHour(models.Model):
name = models.IntegerField()
def __str__(self):
return str(self.name)
class Meta:
verbose_name_plural = "Minutes"
ordering = ['name']
2017-12-22 17:02:24 +01:00
class Weekday(models.Model):
name = models.CharField(max_length=50)
2017-12-22 23:58:46 +01:00
value = models.IntegerField()
def __str__(self):
return self.name
2017-12-25 13:19:58 +01:00
class Meta:
ordering = ['value']
2017-12-22 23:58:46 +01:00
class DayOfMonth(models.Model):
name = models.IntegerField()
2017-12-22 17:02:24 +01:00
def __str__(self):
return str(self.name)
2017-12-22 17:02:24 +01:00
class Meta:
verbose_name_plural = "Days of Month"
ordering = ['name']
2017-12-22 17:02:24 +01:00
class Month(models.Model):
name = models.CharField(max_length=50)
2017-12-22 23:58:46 +01:00
value = models.IntegerField()
2017-12-22 17:02:24 +01:00
def __str__(self):
return self.name
2017-12-25 13:19:58 +01:00
class Meta:
ordering = ['value']
2017-12-22 17:02:24 +01:00
class RamType(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Types of RAM Modules"
2017-12-22 17:02:24 +01:00
class Ram(models.Model):
type = models.ForeignKey(RamType, on_delete=models.CASCADE)
size_in_gb = models.IntegerField()
ecc = models.BooleanField(default=False)
2017-12-22 17:02:24 +01:00
def __str__(self):
2017-12-25 00:11:06 +01:00
return '{} {} GB'.format(self.type, self.size_in_gb)
2017-12-22 17:02:24 +01:00
class Meta:
verbose_name_plural = "RAM Modules"
2017-12-22 17:02:24 +01:00
class DiskType(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Types of disks"
ordering = ['name']
2017-12-22 17:02:24 +01:00
class DiskSize(models.Model):
size = models.IntegerField()
2017-12-22 17:02:24 +01:00
def __str__(self):
2017-12-25 00:11:15 +01:00
return str(self.size) + " GB"
2017-12-22 17:02:24 +01:00
class Meta:
verbose_name_plural = "Disk sizes"
ordering = ['size']
2017-12-22 17:02:24 +01:00
class Disk(models.Model):
type = models.ForeignKey(DiskType, on_delete=models.CASCADE)
size_in_gb = models.ForeignKey(DiskSize, on_delete=models.CASCADE)
def __str__(self):
return '{} {}'.format(self.type, self.size_in_gb)
2017-12-22 17:02:24 +01:00
2017-12-27 17:12:47 +01:00
class Meta:
ordering = ['type']
2017-12-22 17:02:24 +01:00
class Architecture(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class CpuManufacturer(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "CPU Manufacturers"
2017-12-22 17:02:24 +01:00
class Cpu(models.Model):
name = models.CharField(max_length=50)
manufacturer = models.ForeignKey(CpuManufacturer, on_delete=models.PROTECT)
number_of_cores = models.IntegerField()
frequency = models.FloatField()
architecture = models.ForeignKey(Architecture, on_delete=models.PROTECT)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "CPUs"
2017-12-22 17:02:24 +01:00
class OperatingSystem(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Operating Systems"
2017-12-22 17:02:24 +01:00
class Raid(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Types of RAID"
2017-12-22 17:02:24 +01:00
class Computer(Device):
os = models.ForeignKey(OperatingSystem, on_delete=models.PROTECT)
cpu = models.ManyToManyField(Cpu, through='ComputerCpuRelation')
2017-12-22 17:02:24 +01:00
ram = models.ManyToManyField(Ram, through='ComputerRamRelation')
ip = models.CharField(max_length=15)
disks = models.ManyToManyField(Disk, through='ComputerDiskRelation')
host = models.ForeignKey('self', null=True, blank=True,
on_delete=models.PROTECT)
def __str__(self):
return str(self.name)
2017-12-22 17:02:24 +01:00
2018-01-06 09:55:34 +01:00
class Meta:
ordering = ['ip']
2017-12-22 17:02:24 +01:00
class ComputerDiskRelation(models.Model):
disk = models.ForeignKey(Disk, on_delete=models.CASCADE)
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
amount = models.IntegerField()
raid = models.ForeignKey(Raid, null=True, blank=True,
on_delete=models.PROTECT)
2017-12-22 17:02:24 +01:00
def __str__(self):
return self.computer.name
class Meta:
verbose_name_plural = "Disks in Computer"
2017-12-22 17:02:24 +01:00
class ComputerRamRelation(models.Model):
ram = models.ForeignKey(Ram, on_delete=models.CASCADE)
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
amount = models.IntegerField()
def __str__(self):
return self.computer.name
2017-12-22 23:59:59 +01:00
class Meta:
verbose_name_plural = "RAM Modules in Computer"
class ComputerCpuRelation(models.Model):
cpu = models.ForeignKey(Cpu, on_delete=models.CASCADE)
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
amount = models.IntegerField()
def __str__(self):
return self.computer.name
class Meta:
verbose_name_plural = "CPUs in Computer"
2017-12-22 17:02:24 +01:00
class Warranty(models.Model):
device = models.ForeignKey(Device, on_delete=models.CASCADE)
files = models.FileField()
valid_until = models.DateField()
def __str__(self):
return self.device
class Meta:
verbose_name_plural = "Warranties"
2017-12-22 17:02:24 +01:00
class CronJob(models.Model):
name = models.CharField(max_length=50)
host = models.ForeignKey(Computer, on_delete=models.CASCADE)
command = models.CharField(max_length=50)
minutes = models.ForeignKey(MinutesInHour, on_delete=models.CASCADE,
null=True, blank=True,)
hours = models.ForeignKey(HoursInDay, on_delete=models.CASCADE,
2017-12-27 15:52:43 +01:00
null=True, blank=True,)
weekday = models.ForeignKey(Weekday, on_delete=models.CASCADE,
null=True, blank=True,)
day = models.ForeignKey(DayOfMonth, on_delete=models.CASCADE,
null=True, blank=True,)
month = models.ForeignKey(Month, on_delete=models.CASCADE,
null=True, blank=True,)
2017-12-22 17:02:24 +01:00
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Cron Jobs"