Some checks failed
Build containers when image tags change / build-if-image-changed (., web, containers, main container, git.baumann.gr/adebaumann/labhelper) (push) Successful in 2m52s
Build containers when image tags change / build-if-image-changed (data-loader, loader, initContainers, init-container, git.baumann.gr/adebaumann/labhelper-data-loader) (push) Successful in 25s
SonarQube Scan / SonarQube Trigger (push) Failing after 20s
82 lines
1.9 KiB
Python
82 lines
1.9 KiB
Python
from django.db import models
|
|
from mptt.models import MPTTModel, TreeForeignKey
|
|
|
|
|
|
class BoxType(models.Model):
|
|
"""A type of storage box with specific dimensions."""
|
|
|
|
name = models.CharField(max_length=255)
|
|
width = models.PositiveIntegerField(help_text='Width in millimeters')
|
|
height = models.PositiveIntegerField(help_text='Height in millimeters')
|
|
length = models.PositiveIntegerField(help_text='Length in millimeters')
|
|
|
|
class Meta:
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Box(models.Model):
|
|
"""A storage box in the lab."""
|
|
|
|
id = models.CharField(
|
|
max_length=10,
|
|
primary_key=True,
|
|
help_text='Alphanumeric identifier (max 10 characters)'
|
|
)
|
|
box_type = models.ForeignKey(
|
|
BoxType,
|
|
on_delete=models.PROTECT,
|
|
related_name='boxes'
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name_plural = 'boxes'
|
|
|
|
def __str__(self):
|
|
return self.id
|
|
|
|
|
|
class ThingType(MPTTModel):
|
|
"""A hierarchical type/category for things stored in boxes."""
|
|
|
|
name = models.CharField(max_length=255)
|
|
parent = TreeForeignKey(
|
|
'self',
|
|
on_delete=models.CASCADE,
|
|
null=True,
|
|
blank=True,
|
|
related_name='children'
|
|
)
|
|
|
|
class MPTTMeta:
|
|
order_insertion_by = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Thing(models.Model):
|
|
"""An item stored in a box."""
|
|
|
|
name = models.CharField(max_length=255)
|
|
thing_type = models.ForeignKey(
|
|
ThingType,
|
|
on_delete=models.PROTECT,
|
|
related_name='things'
|
|
)
|
|
box = models.ForeignKey(
|
|
Box,
|
|
on_delete=models.PROTECT,
|
|
related_name='things'
|
|
)
|
|
description = models.TextField(blank=True)
|
|
picture = models.ImageField(upload_to='things/', blank=True)
|
|
|
|
class Meta:
|
|
ordering = ['name']
|
|
|
|
def __str__(self):
|
|
return self.name
|