Files
backend-v1/core/apps/evaluation/models/request.py
2026-04-28 17:30:11 +05:00

131 lines
4.6 KiB
Python

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")