feat: add ReferenceItem model and update QuickEvaluation FKs
- Create ReferenceitemModel with type, name, parent (self FK), order, is_active fields - Add ReferenceType choices: brand, marka, color, fuel_type, body_type, car_position, state_car - Implement ReferenceItem API (list, retrieve) with filter by type/parent/is_active, search, ordering - Add ReferenceItem admin with list_filter, search, inline editing - Change QuickEvaluation FK fields from shared.OptionsModel to evaluation.ReferenceitemModel - Update serializers and views to use .name instead of .key - Add ReferenceItem to unfold admin navigation
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
# Generated by Django 5.2.7 on 2026-03-09 09:57
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('evaluation', '0011_update_choices_to_english'),
|
||||
('shared', '0002_settingsmodel_created_at_settingsmodel_description_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='condition',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='license_plate',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='manufacture_year',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='mileage',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='model',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='tech_passport_number',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='car_manufactured_date',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='manufacture year'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='car_number',
|
||||
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='car number'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='car_position',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_positions', to='shared.optionsmodel', verbose_name='car position'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='distance_covered',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='distance covered (km)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='marka',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_markas', to='shared.optionsmodel', verbose_name='marka'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='tech_passport_issued_date',
|
||||
field=models.DateField(blank=True, null=True, verbose_name='tech passport issued date'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='tech_passport_issued_place',
|
||||
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='tech passport issued place'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='tex_passport_file',
|
||||
field=models.FileField(blank=True, null=True, upload_to='quick_evaluation/tech_passports/%Y/%m/', verbose_name='tech passport file'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='tex_passport_serie_num',
|
||||
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='tech passport series and number'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='body_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_body_types', to='shared.optionsmodel', verbose_name='body type'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='brand',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_brands', to='shared.optionsmodel', verbose_name='brand'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='color',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_colors', to='shared.optionsmodel', verbose_name='color'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='fuel_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_fuel_types', to='shared.optionsmodel', verbose_name='fuel type'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='state_car',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_states', to='shared.optionsmodel', verbose_name='car state'),
|
||||
),
|
||||
]
|
||||
33
core/apps/evaluation/migrations/0013_referenceitemmodel.py
Normal file
33
core/apps/evaluation/migrations/0013_referenceitemmodel.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 5.2.7 on 2026-03-09 10:49
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('evaluation', '0012_remove_quickevaluationmodel_condition_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ReferenceitemModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('type', models.CharField(choices=[('brand', 'Brand'), ('marka', 'Marka'), ('color', 'Color'), ('fuel_type', 'Fuel type'), ('body_type', 'Body type'), ('car_position', 'Car position'), ('state_car', 'Car state')], max_length=50, verbose_name='type')),
|
||||
('name', models.CharField(max_length=255, verbose_name='name')),
|
||||
('order', models.IntegerField(default=0, verbose_name='order')),
|
||||
('is_active', models.BooleanField(default=True, verbose_name='is active')),
|
||||
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='evaluation.referenceitemmodel', verbose_name='parent')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Reference Item',
|
||||
'verbose_name_plural': 'Reference Items',
|
||||
'db_table': 'ReferenceItem',
|
||||
'ordering': ['type', 'order', 'name'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,49 @@
|
||||
# Generated by Django 5.2.7 on 2026-03-09 10:51
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('evaluation', '0013_referenceitemmodel'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='body_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_body_types', to='evaluation.referenceitemmodel', verbose_name='body type'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='brand',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_brands', to='evaluation.referenceitemmodel', verbose_name='brand'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='car_position',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_positions', to='evaluation.referenceitemmodel', verbose_name='car position'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='color',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_colors', to='evaluation.referenceitemmodel', verbose_name='color'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='fuel_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_fuel_types', to='evaluation.referenceitemmodel', verbose_name='fuel type'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='marka',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_markas', to='evaluation.referenceitemmodel', verbose_name='marka'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='quickevaluationmodel',
|
||||
name='state_car',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quick_eval_states', to='evaluation.referenceitemmodel', verbose_name='car state'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user