network_inventory/backend/computers/models/computer.py

97 lines
3.0 KiB
Python
Raw Normal View History

2019-06-10 21:56:21 +02:00
from django.db import models
2020-01-12 12:43:01 +01:00
from softwares.models import OperatingSystem
from softwares.models import Software
from softwares.models import SoftwareArchitecture
2019-06-10 21:56:21 +02:00
from .cpu import Cpu
2020-05-03 21:47:45 +02:00
from devices.models import Device
2019-06-10 21:56:21 +02:00
from .disk import Disk
2020-04-30 15:40:00 +02:00
from .gpu import Gpu
2019-06-10 21:56:21 +02:00
from .ram import Ram
2020-05-03 21:47:45 +02:00
class Computer(Device):
2019-06-10 21:56:21 +02:00
os = models.ForeignKey(OperatingSystem, models.SET_NULL, blank=True,
null=True, verbose_name='OS')
2019-06-10 21:56:21 +02:00
cpu = models.ManyToManyField(Cpu, through='ComputerCpuRelation')
ram = models.ManyToManyField(Ram, through='ComputerRamRelation')
2020-04-30 15:40:00 +02:00
gpu = models.ManyToManyField(Gpu, through='ComputerGpuRelation')
2019-06-10 21:56:21 +02:00
disks = models.ManyToManyField(Disk, through='ComputerDiskRelation')
software = models.ManyToManyField(Software,
through='ComputerSoftwareRelation')
host = models.ForeignKey('self', null=True, blank=True,
on_delete=models.CASCADE)
allocated_space = models.IntegerField(null=True, blank=True)
def __str__(self):
return str(self.name)
class Meta:
ordering = ['name']
2019-12-10 22:20:34 +01:00
def get_absolute_url(self):
from django.urls import reverse
return reverse('computer', args=[str(self.id)])
2019-06-10 21:56:21 +02:00
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 str(self.computer)
2019-06-10 21:56:21 +02:00
class Meta:
verbose_name_plural = "CPUs 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 str(self.computer)
2019-06-10 21:56:21 +02:00
class Meta:
verbose_name_plural = "RAM Modules in Computer"
class ComputerDiskRelation(models.Model):
disk = models.ForeignKey(Disk, on_delete=models.CASCADE)
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
amount = models.IntegerField()
def __str__(self):
return str(self.computer)
2019-06-10 21:56:21 +02:00
class Meta:
verbose_name_plural = "Disks in Computer"
class ComputerSoftwareRelation(models.Model):
software = models.ForeignKey(Software, on_delete=models.CASCADE)
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
architecture = models.ForeignKey(SoftwareArchitecture, models.SET_NULL,
blank=True, null=True)
def __str__(self):
return str(self.computer)
2019-06-10 21:56:21 +02:00
class Meta:
verbose_name_plural = "Software on Computer"
2020-04-30 15:40:00 +02:00
class ComputerGpuRelation(models.Model):
gpu = models.ForeignKey(Gpu, on_delete=models.CASCADE)
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
amount = models.IntegerField()
def __str__(self):
return str(self.computer)
2020-04-30 15:40:00 +02:00
class Meta:
verbose_name_plural = "GPUs in Computer"