88 lines
2.7 KiB
Python
88 lines
2.7 KiB
Python
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.vehicle import FuelType, BodyType, VehicleCondition
|
|
|
|
|
|
class VehicleModel(AbstractBaseModel):
|
|
# 🌐 Texnik passport ma'lumotlari (API orqali olinadi)
|
|
tech_passport_series = models.CharField(
|
|
verbose_name=_("tech passport series"), max_length=10, blank=True, null=True
|
|
)
|
|
tech_passport_number = models.CharField(
|
|
verbose_name=_("tech passport 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_by = models.CharField(
|
|
verbose_name=_("tech passport issued by"), max_length=255, blank=True, null=True
|
|
)
|
|
|
|
license_plate = models.CharField(
|
|
verbose_name=_("license plate"), max_length=20, blank=True, null=True
|
|
)
|
|
brand = models.CharField(
|
|
verbose_name=_("brand"), max_length=100, blank=True, null=True
|
|
)
|
|
model = models.CharField(
|
|
verbose_name=_("model"), max_length=100, blank=True, null=True
|
|
)
|
|
manufacture_year = models.IntegerField(
|
|
verbose_name=_("manufacture year"), blank=True, null=True
|
|
)
|
|
vin_number = models.CharField(
|
|
verbose_name=_("VIN number"), max_length=25, blank=True, null=True
|
|
)
|
|
engine_number = models.CharField(
|
|
verbose_name=_("engine number"), max_length=50, blank=True, null=True
|
|
)
|
|
color = models.CharField(
|
|
verbose_name=_("color"), max_length=50, blank=True, null=True
|
|
)
|
|
|
|
# 🛠 Texnik holati
|
|
mileage = models.IntegerField(
|
|
verbose_name=_("mileage"), blank=True, null=True, help_text=_("Distance in km")
|
|
)
|
|
fuel_type = models.CharField(
|
|
verbose_name=_("fuel type"),
|
|
max_length=20,
|
|
choices=FuelType.choices,
|
|
blank=True,
|
|
null=True,
|
|
)
|
|
body_type = models.CharField(
|
|
verbose_name=_("body type"),
|
|
max_length=20,
|
|
choices=BodyType.choices,
|
|
blank=True,
|
|
null=True,
|
|
)
|
|
condition = models.CharField(
|
|
verbose_name=_("condition"),
|
|
max_length=20,
|
|
choices=VehicleCondition.choices,
|
|
blank=True,
|
|
null=True,
|
|
)
|
|
position = models.CharField(
|
|
verbose_name=_("position"), max_length=50, blank=True, null=True
|
|
)
|
|
|
|
def __str__(self):
|
|
return f"{self.brand} {self.model} ({self.license_plate})"
|
|
|
|
@classmethod
|
|
def _baker(cls):
|
|
return baker.make(cls)
|
|
|
|
class Meta:
|
|
db_table = "Vehicle"
|
|
verbose_name = _("Vehicle")
|
|
verbose_name_plural = _("Vehicles")
|
|
|