Files
labhelper/boxes/models.py
Adrian A. Baumann ac6bd2f666
Some checks are pending
SonarQube Scan / SonarQube Trigger (push) Waiting to run
Build containers when image tags change / build-if-image-changed (., web, containers, main container, git.baumann.gr/adebaumann/labhelper) (push) Successful in 7s
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 7s
Things added, WIP
2025-12-28 20:20:57 +01:00

74 lines
1.7 KiB
Python

from django.db import models
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(models.Model):
"""A type/category for things stored in boxes."""
name = models.CharField(max_length=255, unique=True)
class Meta:
ordering = ['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