from django.conf import settings 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.request import ( EvaluationRateType, RequestObjectType, RequestStatus, RequestPersonType, ) from core.apps.evaluation.models import ReferenceitemModel class EvaluationrequestModel(AbstractBaseModel): rate_type = models.CharField(max_length=50,choices=EvaluationRateType.choices) object_type = models.CharField(max_length=50,choices=RequestObjectType.choices,blank=True,null=True) status = models.CharField(max_length=50, choices=RequestStatus.choices, default=RequestStatus.PENDING) distance_covered = models.FloatField(default=0.0, null=True, blank=True) worked_hours = models.IntegerField(blank=True,null=True) customer_inn_number = models.CharField(max_length=20) owner_inn_number = models.CharField(max_length=20) tex_passport = models.CharField(max_length=20,blank=True,null=True) chassi = models.CharField(max_length=100,blank=True,null=True) gov_number = models.CharField(max_length=100, null=True, blank=True) location_name = models.CharField(max_length=255,blank=True,null=True) location_lat = models.DecimalField(max_digits=9,decimal_places=6,blank=True, null=True) location_lng = models.DecimalField(max_digits=9,decimal_places=6,blank=True,null=True) need_delivering = models.BooleanField(default=True) is_archive = models.BooleanField(default=False) customer_and_owner_same = models.BooleanField(default=False) ################### # Foreign Keys ################### user = models.ForeignKey( "accounts.User", on_delete=models.CASCADE, related_name="evaluation_requests", verbose_name=_("user"), ) value_determined = models.ForeignKey( "evaluation.ReferenceitemModel", verbose_name=_("value determined"), related_name="evaluation_value_determined_requests", on_delete=models.SET_NULL, blank=True, null=True, ) rate_goal = models.ForeignKey( "evaluation.ReferenceitemModel", verbose_name=_("rate goal"), related_name="evaluation_rate_goal_requests", on_delete=models.SET_NULL, blank=True, null=True, ) property_rights = models.ForeignKey( "evaluation.ReferenceitemModel", verbose_name=_("property rights"), related_name="evaluation_property_rights_requests", on_delete=models.SET_NULL, blank=True, null=True, ) form_ownership = models.ForeignKey( "evaluation.ReferenceitemModel", verbose_name=_("form ownership"), related_name="evaluation_form_ownership_requests", on_delete=models.SET_NULL, blank=True, null=True, ) def __str__(self): return f"Requests #{self.pk} — {self.get_rate_type_display()}" @classmethod def _baker(cls): user = baker.make(settings.AUTH_USER_MODEL) reference = ReferenceitemModel.objects.create( name="test" ) return baker.make( cls, user=user, rate_type=EvaluationRateType.AUTO, customer_inn_number="123456789", owner_inn_number="987654321", value_determined=reference, rate_goal=reference, property_rights=reference, form_ownership=reference, ) class Meta: db_table = "EvaluationRequest" verbose_name = _("Evaluation Request") verbose_name_plural = _("Evaluation Requests") class EvaluationRequestOwnerModel(AbstractBaseModel): evaluation_request = models.OneToOneField(EvaluationrequestModel, on_delete=models.CASCADE, related_name='owner') type = models.CharField(max_length=100, choices=RequestPersonType.choices) jshshir = models.CharField(max_length=100) def __str__(self): return f"Owner #{self.pk} — {self.type}" class Meta: verbose_name = _("Evaluation Request Owner") verbose_name_plural = _("Evaluation Request Owners") class EvaluationRequestCustomerModel(AbstractBaseModel): evaluation_request = models.OneToOneField(EvaluationrequestModel, on_delete=models.CASCADE, related_name='customer') type = models.CharField(max_length=100, choices=RequestPersonType.choices) jshshir = models.CharField(max_length=100) def __str__(self): return f"Customer #{self.pk} — {self.type}" class Meta: verbose_name = _("Evaluation Request Customer") verbose_name_plural = _("Evaluation Request Customers")