feat(auto-evaluation): to'liq CRUD API va 4 bosqichli forma qo'shildi

- 10 ta yangi choice klass qo'shildi: ObjectOwnerType, PropertyRights,
  FormOwnership, LocationHighways, LocationConvenience, AutoCarType, AutoCarWheel
- AutoEvaluationModel ga ~30 ta yangi field qo'shildi (4 bosqich):
  1-bosqich: ro'yxatga olish raqami, sanalar, ob'ekt turi
  2-bosqich: egasi ma'lumotlari (jismoniy/yuridik), mulk huquqi, egalik shakli
  3-bosqich: manzil (viloyat, tuman, shahar, mahalla, ko'cha, uy)
  4-bosqich: avtomobil (tex passport, marka, model, raqam, rang, dvigatel)
- CreateSerializer ga validatsiya qo'shildi:
  passport formati (AA 1234567), tex passport formati (AAA 1234567),
  egasi turiga qarab majburiy fieldlar (jismoniy yoki yuridik)
- View ReadOnlyModelViewSet dan ModelViewSet ga o'zgartirildi
- Admin 4 bosqichli fieldset bilan yangilandi
- Yangi filterlar: object_owner_type, property_rights, form_ownership
- VehicleModel fieldlari FK → ReferenceitemModel ga o'tkazildi
- Migratsiyalar: 0015, 0016, 0017
This commit is contained in:
Husanjonazamov
2026-03-10 12:10:28 +05:00
parent b3581233c1
commit 5c2fe032d0
13 changed files with 1021 additions and 78 deletions

View File

@@ -0,0 +1,108 @@
# Generated by Django 5.2.7 on 2026-03-09 12:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evaluation', '0014_alter_quickevaluationmodel_body_type_and_more'),
]
operations = [
migrations.AddField(
model_name='autoevaluationmodel',
name='contract_date',
field=models.DateField(blank=True, null=True, verbose_name='contract date'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='form_ownership',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='form of ownership'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_inspection_date',
field=models.DateField(blank=True, null=True, verbose_name='object inspection date'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_city',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='object location city'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_district',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='object location district'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_province',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='object location province'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_type',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='object owner type'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_type',
field=models.CharField(blank=True, choices=[('lightweight_auto', 'Lightweight Auto'), ('truck_car', 'Truck Car'), ('special_tech', 'Special Tech')], max_length=50, null=True, verbose_name='object type'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='property_rights',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='property rights'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='rate_date',
field=models.DateField(blank=True, null=True, verbose_name='rate date'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='rate_object_name',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='rate object name'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='rate_report_date',
field=models.DateField(blank=True, null=True, verbose_name='rate report date'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='rate_type',
field=models.IntegerField(blank=True, choices=[(1, '1-tur'), (2, '2-tur'), (3, '3-tur'), (4, '4-tur')], null=True, verbose_name='rate type'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='rating_goal',
field=models.CharField(blank=True, choices=[('sotuv', 'Sotuv'), ('kredit', 'Kredit'), ('sugurta', "Sug'urta"), ('boshqa', 'Boshqa')], max_length=50, null=True, verbose_name='rating goal'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='registration_number',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='registration number'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='status',
field=models.CharField(choices=[('yaratildi', 'Yaratildi'), ('baxolovchi_biriktirildi', 'Baholovchi biriktirildi'), ('baxolandi', 'Baholandi'), ('rad_etildi', 'Rad etildi'), ('tasdiqlandi', 'Tasdiqlandi')], default='yaratildi', max_length=50, verbose_name='status'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='tex_passport_gived_date',
field=models.DateField(blank=True, null=True, verbose_name='tech passport given date'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='tex_passport_serie_num',
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='tech passport series and number'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='value_determined',
field=models.IntegerField(blank=True, choices=[(1, '1-qiymat'), (2, '2-qiymat'), (3, '3-qiymat'), (4, '4-qiymat')], null=True, verbose_name='value determined'),
),
]

View File

@@ -0,0 +1,44 @@
# Generated by Django 5.2.7 on 2026-03-09 12:34
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evaluation', '0015_autoevaluationmodel_contract_date_and_more'),
]
operations = [
migrations.AlterField(
model_name='vehiclemodel',
name='body_type',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_body_types', to='evaluation.referenceitemmodel', verbose_name='body type'),
),
migrations.AlterField(
model_name='vehiclemodel',
name='brand',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_brands', to='evaluation.referenceitemmodel', verbose_name='brand'),
),
migrations.AlterField(
model_name='vehiclemodel',
name='color',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_colors', to='evaluation.referenceitemmodel', verbose_name='color'),
),
migrations.AlterField(
model_name='vehiclemodel',
name='fuel_type',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_fuel_types', to='evaluation.referenceitemmodel', verbose_name='fuel type'),
),
migrations.AlterField(
model_name='vehiclemodel',
name='model',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_models', to='evaluation.referenceitemmodel', verbose_name='model'),
),
migrations.AlterField(
model_name='vehiclemodel',
name='position',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_positions', to='evaluation.referenceitemmodel', verbose_name='position'),
),
]

View File

@@ -0,0 +1,159 @@
# Generated by Django 5.2.7 on 2026-03-09 12:54
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evaluation', '0016_alter_vehiclemodel_body_type_and_more'),
]
operations = [
migrations.AddField(
model_name='autoevaluationmodel',
name='car_brand',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='car brand'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='car_color',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='car color'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='car_dvigatel_number',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='engine number'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='car_model',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='car model'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='car_number',
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='car number'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='car_type',
field=models.IntegerField(blank=True, choices=[(1, 'Xetchbek'), (2, 'Universal')], null=True, verbose_name='car type'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='car_wheel',
field=models.IntegerField(blank=True, choices=[(1, '4x4')], null=True, verbose_name='car wheel'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='manufacture_year',
field=models.CharField(blank=True, max_length=10, null=True, verbose_name='manufacture year'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_covenience',
field=models.IntegerField(blank=True, choices=[(1, 'Aholi gavjum hudud'), (2, 'Bozor hududi')], null=True, verbose_name='location convenience'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_highways',
field=models.IntegerField(blank=True, choices=[(1, 'Tuman/Shahar markazi'), (2, 'Tuman/shahar markazidan uzoqda')], null=True, verbose_name='location highways'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_home',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='object location home'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_neighborhood',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='object location neighborhood'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_location_street',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='object location street'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_individual_person_f_name',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='owner first name'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_individual_person_l_name',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='owner last name'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_individual_person_p_name',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='owner patronymic'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_individual_person_passport_num',
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='owner passport number'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_legal_entity',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='legal entity name'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='object_owner_legal_inn',
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='legal entity INN'),
),
migrations.AddField(
model_name='autoevaluationmodel',
name='tex_passport_gived_location',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='tech passport given location'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='form_ownership',
field=models.IntegerField(blank=True, choices=[(1, 'Xususiy'), (2, 'Davlat'), (3, 'AJ'), (4, 'MCHJ'), (5, 'Boshqa')], null=True, verbose_name='form of ownership'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='object_owner_type',
field=models.IntegerField(blank=True, choices=[(1, 'Jismoniy shaxs'), (2, 'Yuridik shaxs')], null=True, verbose_name='object owner type'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='object_type',
field=models.CharField(blank=True, choices=[('lightweight_auto', 'Yengil automobil'), ('truck_car', 'Yuk automobil'), ('special_tech', 'Maxsus texnika')], max_length=50, null=True, verbose_name='object type'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='property_rights',
field=models.IntegerField(blank=True, choices=[(1, 'Doimiy egalik'), (2, 'Doimiy foydalanish'), (3, 'Vaqtinchalik foydalanish'), (4, 'Muddatli ijara'), (5, 'Umrbod meros qilib olish')], null=True, verbose_name='property rights'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='rate_type',
field=models.IntegerField(blank=True, choices=[(1, "Kredit ta'minoti sifatida garovga qo'yish"), (2, 'Sotish maqsadida bozor qiymatini aniqlash'), (3, 'Soliqqa tortish maqsadida'), (4, 'Boshqa')], null=True, verbose_name='rate type'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='rating_goal',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='rating goal'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='valuation',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='auto_detail', to='evaluation.valuationmodel', verbose_name='valuation'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='value_determined',
field=models.IntegerField(blank=True, choices=[(1, 'Bozor qiymati'), (2, 'Soliq maqsadlari uchun'), (3, 'Tugatish qiymati'), (4, 'Utilizatsiya qiymati')], null=True, verbose_name='value determined'),
),
migrations.AlterField(
model_name='autoevaluationmodel',
name='vehicle',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evaluation', to='evaluation.vehiclemodel', verbose_name='vehicle'),
),
]