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 class EvaluationReportModel(AbstractBaseModel): valuation = models.OneToOneField( ValuationModel, on_delete=models.CASCADE, related_name="report", verbose_name=_("valuation"), ) evaluator = models.ForeignKey( "accounts.User", on_delete=models.PROTECT, related_name="reports", verbose_name=_("evaluator"), ) report_number = models.CharField( verbose_name=_("report number"), max_length=100, unique=True ) final_value = models.DecimalField( verbose_name=_("final value"), max_digits=15, decimal_places=2 ) report_file = models.FileField( verbose_name=_("report file"), upload_to="evaluation/reports/", blank=True, null=True ) conclusion_text = models.TextField(verbose_name=_("conclusion text"), blank=True) approved_at = models.DateTimeField( verbose_name=_("approved at"), blank=True, null=True ) def __str__(self): return f"Report #{self.report_number} for {self.valuation}" @classmethod def _baker(cls): return baker.make(cls) class Meta: db_table = "EvaluationReport" verbose_name = _("Evaluation Report") verbose_name_plural = _("Evaluation Reports")