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.document import DocumentType class ValuationDocumentModel(AbstractBaseModel): valuation = models.ForeignKey( ValuationModel, on_delete=models.CASCADE, related_name="documents", verbose_name=_("valuation"), ) document_type = models.CharField( verbose_name=_("document type"), max_length=50, choices=DocumentType.choices, default=DocumentType.OTHER, ) title = models.CharField( verbose_name=_("title"), max_length=255, blank=True, ) file = models.FileField( verbose_name=_("file"), upload_to="evaluation/documents/%Y/%m/", ) uploaded_by = models.ForeignKey( "accounts.User", on_delete=models.SET_NULL, null=True, blank=True, related_name="uploaded_documents", verbose_name=_("uploaded by"), ) description = models.TextField( verbose_name=_("description"), blank=True, ) def __str__(self): return f"{self.get_document_type_display()} — {self.valuation}" @classmethod def _baker(cls): return baker.make(cls) class Meta: db_table = "ValuationDocument" verbose_name = _("Valuation Document") verbose_name_plural = _("Valuation Documents") ordering = ["-created_at"]