from django.db import models from django.utils.translation import gettext_lazy as _ from django_core.models import AbstractBaseModel from model_bakery import baker from .valuation import ValuationModel from core.apps.evaluation.choices.movable import ( MovablePropertyCategory, MovablePropertyCondition, ) class MovablePropertyEvaluationModel(AbstractBaseModel): valuation = models.OneToOneField( ValuationModel, on_delete=models.CASCADE, related_name="movable_property_detail", verbose_name=_("valuation"), ) property_name = models.CharField(verbose_name=_("property name"), max_length=255) property_category = models.CharField( verbose_name=_("property category"), max_length=50, choices=MovablePropertyCategory.choices, default=MovablePropertyCategory.OTHER, ) serial_number = models.CharField( verbose_name=_("serial number"), max_length=100, blank=True, null=True ) manufacture_year = models.IntegerField( verbose_name=_("manufacture year"), blank=True, null=True ) condition = models.CharField( verbose_name=_("condition"), max_length=50, choices=MovablePropertyCondition.choices, blank=True, null=True, ) quantity = models.IntegerField(verbose_name=_("quantity"), default=1) def __str__(self): return f"Movable Property Evaluation: {self.property_name} ({self.valuation})" @classmethod def _baker(cls): return baker.make(cls) class Meta: db_table = "MovablePropertyEvaluation" verbose_name = _("Movable Property Evaluation") verbose_name_plural = _("Movable Property Evaluations")