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 core.apps.evaluation.choices.quick import CarType, QuickEvaluationStatus class QuickEvaluationModel(AbstractBaseModel): created_by = models.ForeignKey( "accounts.User", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_evaluations", verbose_name=_("created by"), ) # Tex passport tex_passport_serie_num = models.CharField( verbose_name=_("tech passport series and number"), max_length=20, blank=True, null=True, ) tech_passport_issued_date = models.DateField( verbose_name=_("tech passport issued date"), blank=True, null=True, ) tech_passport_issued_place = models.CharField( verbose_name=_("tech passport issued place"), max_length=255, blank=True, null=True, ) tex_passport_file = models.FileField( verbose_name=_("tech passport file"), upload_to="quick_evaluation/tech_passports/%Y/%m/", blank=True, null=True, ) # Car info car_type = models.CharField( verbose_name=_("car type"), max_length=50, choices=CarType.choices, blank=True, null=True, ) brand = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_brands", verbose_name=_("brand"), ) marka = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_markas", verbose_name=_("marka"), ) car_position = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_positions", verbose_name=_("car position"), ) distance_covered = models.IntegerField( verbose_name=_("distance covered (km)"), blank=True, null=True, ) body_type = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_body_types", verbose_name=_("body type"), ) vin_number = models.CharField( verbose_name=_("VIN number"), max_length=50, blank=True, null=True ) car_number = models.CharField( verbose_name=_("car number"), max_length=20, blank=True, null=True ) car_manufactured_date = models.IntegerField( verbose_name=_("manufacture year"), blank=True, null=True ) engine_number = models.CharField( verbose_name=_("engine number"), max_length=50, blank=True, null=True ) color = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_colors", verbose_name=_("color"), ) fuel_type = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_fuel_types", verbose_name=_("fuel type"), ) state_car = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="quick_eval_states", verbose_name=_("car state"), ) # Result estimated_price = models.DecimalField( verbose_name=_("estimated price"), max_digits=15, decimal_places=2, blank=True, null=True, ) status = models.CharField( verbose_name=_("status"), max_length=50, choices=QuickEvaluationStatus.choices, default=QuickEvaluationStatus.CREATED, ) def __str__(self): return f"Quick Evaluation {self.pk} by {self.created_by}" @classmethod def _baker(cls): return baker.make(cls) class Meta: db_table = "QuickEvaluation" verbose_name = _("Quick Evaluation") verbose_name_plural = _("Quick Evaluations")