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.")