Files
training.django/source/advanced/various/models/room.py
Steve Kossouho e3ebf6bf4f Add documentation and source
Added documentation, source and extra files.
2025-07-02 20:26:50 +02:00

50 lines
1.4 KiB
Python

from django.db import models
from django.utils.translation import gettext_lazy as _
class Room(models.Model):
"""
Room definition.
"""
name = models.CharField(max_length=32, blank=False, unique=True, verbose_name=_("name"))
description = models.TextField(blank=True, verbose_name=_("description"))
width = models.PositiveIntegerField(default=0, help_text=_("centimeters"), verbose_name=_("width"))
length = models.PositiveIntegerField(default=0, help_text=_("centimeters"), verbose_name=_("length"))
height = models.PositiveIntegerField(default=0, help_text=_("centimeters"), verbose_name=_("height"))
class Meta:
verbose_name = _("room")
verbose_name_plural = _("rooms")
def get_area(self) -> int:
"""
Get the area of the room.
Returns:
Area of the room in square centimeters.
"""
return self.width * self.length
def get_volume(self) -> int:
"""
Get the volume of the room.
Returns:
Volume of the room in cube centimeters.
"""
return self.width * self.length * self.height
def is_empty(self) -> bool:
"""
Tell if the room is empty (has no volume).
Returns:
Whether the room has no volume (zero).
"""
return self.width * self.length * self.height == 0