haikal/import_data.py
Marwan Alwali bb10d9186e update
2025-01-08 15:21:20 +03:00

167 lines
6.2 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", "car_inventory.settings")
django.setup()
# Load the cleaned JSON data
with open("carmake_updated_backup.json", "r") as file:
data = json.load(file)
# Step 1: Insert CarMake
for item in tqdm(data["inventory.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),
"car_type": 1,
}
)
# # 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.")