39 lines
1.7 KiB
Python
39 lines
1.7 KiB
Python
import os
|
|
import csv
|
|
from django.core.management.base import BaseCommand
|
|
from inventory.models import CarSerie, CarModel
|
|
|
|
class Command(BaseCommand):
|
|
help = "Update or add CarSerie entries from a merged CSV file"
|
|
|
|
def handle(self, *args, **kwargs):
|
|
# Path to the merged CSV file
|
|
base_dir = os.path.dirname(os.path.abspath(__file__))
|
|
file_path = os.path.join(base_dir, "../../data/Updated_Merged_Car_Generation_and_Serie_Data.csv") # Adjust the path if needed
|
|
|
|
if not os.path.exists(file_path):
|
|
self.stdout.write(self.style.ERROR(f"File not found: {file_path}"))
|
|
return
|
|
|
|
with open(file_path, newline='', encoding='utf-8') as csvfile:
|
|
reader = csv.DictReader(csvfile)
|
|
for row in reader:
|
|
try:
|
|
car_model = CarModel.objects.get(pk=row['id_car_model'])
|
|
except CarModel.DoesNotExist:
|
|
self.stdout.write(self.style.WARNING(f"CarModel with ID {row['id_car_model']} not found"))
|
|
continue
|
|
|
|
car_serie, created = CarSerie.objects.update_or_create(
|
|
id_car_serie=row['id_car_serie'],
|
|
defaults={
|
|
'id_car_model': car_model,
|
|
'name': row['name'],
|
|
'arabic_name': "-",
|
|
'year_begin': int(float(row['year_begin'])) if row['year_begin'] else None,
|
|
'year_end': int(float(row['year_end'])) if row['year_end'] else None,
|
|
},
|
|
)
|
|
|
|
action = "Created" if created else "Updated"
|
|
self.stdout.write(self.style.SUCCESS(f"{action} CarSerie with ID {car_serie.id_car_serie}")) |