haikal/import_data.py
Marwan Alwali 43228b97a8 update
2025-01-07 16:45:00 +03:00

166 lines
5.9 KiB
Python

import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "car_inventory.settings")
django.setup()
import os
import django
import json
from tqdm import tqdm
from inventory.models import (
CarMake, CarModel, CarSerie, CarTrim, CarEquipment,
CarSpecification, CarSpecificationValue, CarOption, CarOptionValue
)
# Set up Django environment
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
django.setup()
# Load the cleaned JSON data
with open("final_car_data.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"],
"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["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.")