create an app for the inventory
This commit is contained in:
parent
30a20c2697
commit
03bbfbc612
190
docs/docs.org
190
docs/docs.org
|
@ -4,22 +4,206 @@
|
|||
|
||||
* Models
|
||||
|
||||
#+BEGIN_SRC python :tangle ../network_inventory/models.py
|
||||
#+BEGIN_SRC python :tangle ../inventory/models.py
|
||||
#!/usr/bin/python3
|
||||
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 Weekday(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Month(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class RamType(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Ram(models.Model):
|
||||
type = models.ForeignKey(RamType, on_delete=models.CASCADE)
|
||||
size_in_gb = models.FloatField()
|
||||
|
||||
def __str__(self):
|
||||
return '{} {} GB'.format(self.type, self.size)
|
||||
|
||||
|
||||
class DiskType(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class DiskSize(models.Model):
|
||||
size = models.FloatField()
|
||||
|
||||
def __str__(self):
|
||||
return self.size + " GB"
|
||||
|
||||
|
||||
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 '{} {} GB'.format(self.type, self.size)
|
||||
|
||||
|
||||
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 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 OperatingSystem(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Raid(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Computer(Device):
|
||||
hostname = models.CharField(max_length=20, unique=True)
|
||||
raid = models.ForeignKey(Raid, null=True, blank=True,
|
||||
on_delete=models.PROTECT)
|
||||
os = models.ForeignKey(OperatingSystem, on_delete=models.PROTECT)
|
||||
cpu = models.ForeignKey(Cpu, on_delete=models.PROTECT)
|
||||
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 self.hostname
|
||||
|
||||
|
||||
class ComputerDiskRelation(models.Model):
|
||||
disk = models.ForeignKey(Disk, on_delete=models.CASCADE)
|
||||
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
|
||||
amount = models.IntegerField()
|
||||
|
||||
|
||||
class ComputerRamRelation(models.Model):
|
||||
ram = models.ForeignKey(Ram, on_delete=models.CASCADE)
|
||||
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
|
||||
amount = models.IntegerField()
|
||||
|
||||
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 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
|
||||
#+END_SRC
|
||||
|
||||
* Admin
|
||||
|
||||
#+BEGIN_SRC python :tangle ../network_inventory/admin.py
|
||||
#+BEGIN_SRC python :tangle ../inventory/admin.py
|
||||
#!/usr/bin/python3
|
||||
from django.contrib import admin
|
||||
from inventory.models import (Device, Weekday, Month, RamType, Ram,
|
||||
DiskType, DiskSize, Disk, Architecture,
|
||||
CpuManufacturer, Cpu, OperatingSystem, Raid,
|
||||
Computer, ComputerDiskRelation,
|
||||
ComputerRamRelation, Warranty, CronJob)
|
||||
|
||||
|
||||
class RamInline(admin.StackedInline):
|
||||
model = ComputerRamRelation
|
||||
verbose_name_plural = 'Ram Modules'
|
||||
|
||||
|
||||
class DiskInline(admin.StackedInline):
|
||||
model = ComputerDiskRelation
|
||||
verbose_name_plural = 'Disks'
|
||||
|
||||
|
||||
class ComputerAdmin(admin.ModelAdmin):
|
||||
inlines = (RamInline, DiskInline)
|
||||
|
||||
|
||||
admin.site.register(Device)
|
||||
admin.site.register(Weekday)
|
||||
admin.site.register(Month)
|
||||
admin.site.register(RamType)
|
||||
admin.site.register(Ram)
|
||||
admin.site.register(DiskType)
|
||||
admin.site.register(DiskSize)
|
||||
admin.site.register(Disk)
|
||||
admin.site.register(Architecture)
|
||||
admin.site.register(CpuManufacturer)
|
||||
admin.site.register(Cpu)
|
||||
admin.site.register(OperatingSystem)
|
||||
admin.site.register(Raid)
|
||||
admin.site.register(Computer)
|
||||
admin.site.register(ComputerDiskRelation)
|
||||
admin.site.register(ComputerRamRelation)
|
||||
admin.site.register(Warranty)
|
||||
admin.site.register(CronJob)
|
||||
#+END_SRC
|
||||
|
||||
* Views
|
||||
|
||||
#+BEGIN_SRC python :tangle ../network_inventory/views.py
|
||||
#+BEGIN_SRC python :tangle ../inventory/views.py
|
||||
#!/usr/bin/python3
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
#!/usr/bin/python3
|
||||
from django.contrib import admin
|
||||
from inventory.models import (Device, Weekday, Month, RamType, Ram,
|
||||
DiskType, DiskSize, Disk, Architecture,
|
||||
CpuManufacturer, Cpu, OperatingSystem, Raid,
|
||||
Computer, ComputerDiskRelation,
|
||||
ComputerRamRelation, Warranty, CronJob)
|
||||
|
||||
|
||||
class RamInline(admin.StackedInline):
|
||||
model = ComputerRamRelation
|
||||
verbose_name_plural = 'Ram Modules'
|
||||
|
||||
|
||||
class DiskInline(admin.StackedInline):
|
||||
model = ComputerDiskRelation
|
||||
verbose_name_plural = 'Disks'
|
||||
|
||||
|
||||
class ComputerAdmin(admin.ModelAdmin):
|
||||
inlines = (RamInline, DiskInline)
|
||||
|
||||
|
||||
admin.site.register(Device)
|
||||
admin.site.register(Weekday)
|
||||
admin.site.register(Month)
|
||||
admin.site.register(RamType)
|
||||
admin.site.register(Ram)
|
||||
admin.site.register(DiskType)
|
||||
admin.site.register(DiskSize)
|
||||
admin.site.register(Disk)
|
||||
admin.site.register(Architecture)
|
||||
admin.site.register(CpuManufacturer)
|
||||
admin.site.register(Cpu)
|
||||
admin.site.register(OperatingSystem)
|
||||
admin.site.register(Raid)
|
||||
admin.site.register(Computer)
|
||||
admin.site.register(ComputerDiskRelation)
|
||||
admin.site.register(ComputerRamRelation)
|
||||
admin.site.register(Warranty)
|
||||
admin.site.register(CronJob)
|
|
@ -0,0 +1,5 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class InventoryConfig(AppConfig):
|
||||
name = 'inventory'
|
|
@ -0,0 +1,239 @@
|
|||
# Generated by Django 2.0 on 2017-12-22 15:21
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Architecture',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ComputerDiskRelation',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('amount', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ComputerRamRelation',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('amount', models.IntegerField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Cpu',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
('number_of_cores', models.IntegerField()),
|
||||
('frequency', models.FloatField()),
|
||||
('architecture', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='inventory.Architecture')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CpuManufacturer',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CronJob',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
('command', models.CharField(max_length=50)),
|
||||
('time', models.TimeField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Device',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
('description', models.TextField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Disk',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DiskSize',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('size', models.FloatField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DiskType',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Month',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='OperatingSystem',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Raid',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Ram',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('size_in_gb', models.FloatField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RamType',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Warranty',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('files', models.FileField(upload_to='')),
|
||||
('valid_until', models.DateField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Weekday',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=50)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Computer',
|
||||
fields=[
|
||||
('device_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='inventory.Device')),
|
||||
('hostname', models.CharField(max_length=20, unique=True)),
|
||||
('ip', models.CharField(max_length=15)),
|
||||
],
|
||||
bases=('inventory.device',),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='warranty',
|
||||
name='device',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Device'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='ram',
|
||||
name='type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.RamType'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='disk',
|
||||
name='size_in_gb',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.DiskSize'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='disk',
|
||||
name='type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.DiskType'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='cronjob',
|
||||
name='month',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Month'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='cronjob',
|
||||
name='weekday',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Weekday'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='cpu',
|
||||
name='manufacturer',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='inventory.CpuManufacturer'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computerramrelation',
|
||||
name='ram',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Ram'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computerdiskrelation',
|
||||
name='disk',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Disk'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='cronjob',
|
||||
name='host',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Computer'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computerramrelation',
|
||||
name='computer',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Computer'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computerdiskrelation',
|
||||
name='computer',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.Computer'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computer',
|
||||
name='cpu',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='inventory.Cpu'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computer',
|
||||
name='disks',
|
||||
field=models.ManyToManyField(through='inventory.ComputerDiskRelation', to='inventory.Disk'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computer',
|
||||
name='host',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='inventory.Computer'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computer',
|
||||
name='os',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='inventory.OperatingSystem'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computer',
|
||||
name='raid',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='inventory.Raid'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='computer',
|
||||
name='ram',
|
||||
field=models.ManyToManyField(through='inventory.ComputerRamRelation', to='inventory.Ram'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,148 @@
|
|||
#!/usr/bin/python3
|
||||
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 Weekday(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Month(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class RamType(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Ram(models.Model):
|
||||
type = models.ForeignKey(RamType, on_delete=models.CASCADE)
|
||||
size_in_gb = models.FloatField()
|
||||
|
||||
def __str__(self):
|
||||
return '{} {} GB'.format(self.type, self.size)
|
||||
|
||||
|
||||
class DiskType(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class DiskSize(models.Model):
|
||||
size = models.FloatField()
|
||||
|
||||
def __str__(self):
|
||||
return self.size + " GB"
|
||||
|
||||
|
||||
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 '{} {} GB'.format(self.type, self.size)
|
||||
|
||||
|
||||
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 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 OperatingSystem(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Raid(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Computer(Device):
|
||||
hostname = models.CharField(max_length=20, unique=True)
|
||||
raid = models.ForeignKey(Raid, null=True, blank=True,
|
||||
on_delete=models.PROTECT)
|
||||
os = models.ForeignKey(OperatingSystem, on_delete=models.PROTECT)
|
||||
cpu = models.ForeignKey(Cpu, on_delete=models.PROTECT)
|
||||
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 self.hostname
|
||||
|
||||
|
||||
class ComputerDiskRelation(models.Model):
|
||||
disk = models.ForeignKey(Disk, on_delete=models.CASCADE)
|
||||
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
|
||||
amount = models.IntegerField()
|
||||
|
||||
|
||||
class ComputerRamRelation(models.Model):
|
||||
ram = models.ForeignKey(Ram, on_delete=models.CASCADE)
|
||||
computer = models.ForeignKey(Computer, on_delete=models.CASCADE)
|
||||
amount = models.IntegerField()
|
||||
|
||||
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 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
|
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/python3
|
||||
from django.shortcuts import get_object_or_404, render
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
#!/usr/bin/python3
|
||||
from django.db import models
|
|
@ -37,6 +37,7 @@ INSTALLED_APPS = [
|
|||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'inventory.apps.InventoryConfig'
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
|
Loading…
Reference in New Issue