162 lines
5.8 KiB
Python
162 lines
5.8 KiB
Python
import os
|
|
import django
|
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "car_inventory.settings")
|
|
django.setup()
|
|
|
|
|
|
import json
|
|
from tqdm import tqdm
|
|
from inventory.models import (
|
|
CarMake, CarModel, CarSerie, CarTrim, CarEquipment,
|
|
CarSpecification, CarSpecificationValue, CarOption, CarOptionValue
|
|
)
|
|
|
|
# Load the cleaned JSON data
|
|
with open("database_export.json", "r") as file:
|
|
data = json.load(file)
|
|
|
|
# Step 1: Insert CarMake
|
|
for item in tqdm(data["car_make"], desc="Inserting CarMake"):
|
|
CarMake.objects.update_or_create(
|
|
id_car_make=item["id_car_make"],
|
|
defaults={
|
|
"name": item["name"],
|
|
"id_car_type": item["id_car_type"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
# "logo": item.get("Logo", ""),
|
|
# "is_sa_import": item.get("is_sa_import", False),
|
|
}
|
|
)
|
|
|
|
# Step 2: Insert CarModel
|
|
for item in tqdm(data["car_model"], desc="Inserting CarModel"):
|
|
CarMake.objects.get(id_car_make=item["id_car_make"])
|
|
CarModel.objects.update_or_create(
|
|
id_car_model=item["id_car_model"],
|
|
defaults={
|
|
"id_car_make_id": item["id_car_make"],
|
|
"name": item["name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
}
|
|
)
|
|
|
|
# Step 3: Insert CarSerie
|
|
for item in tqdm(data["car_serie"], desc="Inserting CarSerie"):
|
|
CarModel.objects.get(id_car_model=item["id_car_model"])
|
|
CarSerie.objects.update_or_create(
|
|
id_car_serie=item["id_car_serie"],
|
|
defaults={
|
|
"id_car_model_id": item["id_car_model"],
|
|
"name": item["serie_name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
"year_begin": item.get("year_begin"),
|
|
"year_end": item.get("year_end"),
|
|
"generation_name": item.get("generation_name", ""),
|
|
}
|
|
)
|
|
|
|
# Step 4: Insert CarTrim
|
|
for item in tqdm(data["car_trim"], desc="Inserting CarTrim"):
|
|
CarSerie.objects.get(id_car_serie=item["id_car_serie"])
|
|
CarTrim.objects.update_or_create(
|
|
id_car_trim=item["id_car_trim"],
|
|
defaults={
|
|
"id_car_serie_id": item["id_car_serie"],
|
|
"name": item["name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
"start_production_year": item["start_production_year"],
|
|
"end_production_year": item["end_production_year"],
|
|
}
|
|
)
|
|
|
|
# Step 5: Insert CarEquipment
|
|
for item in tqdm(data["car_equipment"], desc="Inserting CarEquipment"):
|
|
CarTrim.objects.get(id_car_trim=item["id_car_trim"])
|
|
CarEquipment.objects.update_or_create(
|
|
id_car_equipment=item["id_car_equipment"],
|
|
defaults={
|
|
"id_car_trim_id": item["id_car_trim"],
|
|
"name": item["name"],
|
|
"year_begin": item.get("year"),
|
|
}
|
|
)
|
|
|
|
# Step 6: Insert CarSpecification (Parent specifications first)
|
|
parent_specs = [item for item in data["car_specification"] if item["id_parent"] is None]
|
|
child_specs = [item for item in data["car_specification"] if item["id_parent"] is not None]
|
|
|
|
for item in tqdm(parent_specs, desc="Inserting Parent CarSpecifications"):
|
|
CarSpecification.objects.update_or_create(
|
|
id_car_specification=item["id_car_specification"],
|
|
defaults={
|
|
"name": item["name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
"id_parent_id": None
|
|
}
|
|
)
|
|
|
|
for item in tqdm(child_specs, desc="Inserting Child CarSpecifications"):
|
|
CarSpecification.objects.get(id_car_specification=item["id_parent"])
|
|
CarSpecification.objects.update_or_create(
|
|
id_car_specification=item["id_car_specification"],
|
|
defaults={
|
|
"name": item["name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
"id_parent_id": item["id_parent"]
|
|
}
|
|
)
|
|
|
|
# Step 7: Insert CarSpecificationValue
|
|
for item in tqdm(data["car_specification_value"], desc="Inserting CarSpecificationValue"):
|
|
CarTrim.objects.get(id_car_trim=item["id_car_trim"])
|
|
CarSpecification.objects.get(id_car_specification=item["id_car_specification"])
|
|
CarSpecificationValue.objects.update_or_create(
|
|
id_car_specification_value=item["id_car_specification_value"],
|
|
defaults={
|
|
"id_car_trim_id": item["id_car_trim"],
|
|
"id_car_specification_id": item["id_car_specification"],
|
|
"value": item["value"],
|
|
"unit": item.get("unit", ""),
|
|
}
|
|
)
|
|
|
|
# Step 8: Insert CarOption (Parent options first)
|
|
parent_options = [item for item in data["car_option"] if item["id_parent"] is None]
|
|
child_options = [item for item in data["car_option"] if item["id_parent"] is not None]
|
|
|
|
for item in tqdm(parent_options, desc="Inserting Parent CarOptions"):
|
|
CarOption.objects.update_or_create(
|
|
id_car_option=item["id_car_option"],
|
|
defaults={
|
|
"name": item["name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
"id_parent_id": None
|
|
}
|
|
)
|
|
|
|
for item in tqdm(child_options, desc="Inserting Child CarOptions"):
|
|
CarOption.objects.get(id_car_option=item["id_parent"])
|
|
CarOption.objects.update_or_create(
|
|
id_car_option=item["id_car_option"],
|
|
defaults={
|
|
"name": item["name"],
|
|
# "arabic_name": item.get("arabic_name", ""),
|
|
"id_parent_id": item["id_parent"]
|
|
}
|
|
)
|
|
|
|
# Step 9: Insert CarOptionValue
|
|
for item in tqdm(data["car_option_value"], desc="Inserting CarOptionValue"):
|
|
CarEquipment.objects.get(id_car_equipment=item["id_car_equipment"])
|
|
CarOption.objects.get(id_car_option=item["id_car_option"])
|
|
CarOptionValue.objects.update_or_create(
|
|
id_car_option_value=item["id_car_option_value"],
|
|
defaults={
|
|
"id_car_option_id": item["id_car_option"],
|
|
"id_car_equipment_id": item["id_car_equipment"],
|
|
"is_base": item["is_base"],
|
|
}
|
|
)
|
|
|
|
print("Data population completed successfully.") |