230 lines
5.4 KiB
Python
230 lines
5.4 KiB
Python
from django.db import models
|
|
|
|
|
|
class Device(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
description = models.TextField()
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
from django.db import models
|
|
|
|
|
|
class GeneralDevice(Device):
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Weekday(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
value = models.IntegerField()
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
ordering = ['value']
|
|
|
|
|
|
class DayOfMonth(models.Model):
|
|
name = models.IntegerField()
|
|
|
|
def __str__(self):
|
|
return str(self.name)
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Days of Month"
|
|
ordering = ['name']
|
|
|
|
|
|
class Month(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
value = models.IntegerField()
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
ordering = ['value']
|
|
|
|
|
|
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"
|
|
|
|
|
|
class Ram(models.Model):
|
|
type = models.ForeignKey(RamType, on_delete=models.CASCADE)
|
|
size_in_gb = models.IntegerField()
|
|
ecc = models.BooleanField(default=False)
|
|
|
|
def __str__(self):
|
|
return '{} {} GB'.format(self.type, self.size_in_gb)
|
|
|
|
class Meta:
|
|
verbose_name_plural = "RAM Modules"
|
|
|
|
|
|
class DiskType(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Types of disks"
|
|
|
|
|
|
class DiskSize(models.Model):
|
|
size = models.IntegerField()
|
|
|
|
def __str__(self):
|
|
return str(self.size) + " GB"
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Disk sizes"
|
|
|
|
|
|
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)
|
|
|
|
|
|
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"
|
|
|
|
|
|
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"
|
|
|
|
|
|
class OperatingSystem(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Operating Systems"
|
|
|
|
|
|
class Raid(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Types of RAID"
|
|
|
|
|
|
class Computer(Device):
|
|
os = models.ForeignKey(OperatingSystem, on_delete=models.PROTECT)
|
|
cpu = models.ManyToManyField(Cpu, through='ComputerCpuRelation')
|
|
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)
|
|
|
|
|
|
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)
|
|
|
|
def __str__(self):
|
|
return self.computer.name
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Disks in Computer"
|
|
|
|
|
|
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
|
|
|
|
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"
|
|
|
|
|
|
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"
|
|
|
|
|
|
class CronJob(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
host = models.ForeignKey(Computer, on_delete=models.CASCADE)
|
|
command = models.CharField(max_length=50)
|
|
time = models.TimeField()
|
|
weekday = models.ForeignKey(Weekday, on_delete=models.CASCADE)
|
|
month = models.ForeignKey(Month, on_delete=models.CASCADE)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name_plural = "Cron Jobs"
|