You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

41 lines
1.7 KiB

import json
from django.core.management.base import BaseCommand
from repostajes.models import Repostaje
class Command(BaseCommand):
help = "Importa repostajes desde un archivo JSON"
def add_arguments(self, parser):
parser.add_argument('archivo_json', type=str, help="Ruta del archivo JSON")
def handle(self, *args, **kwargs):
archivo_json = kwargs['archivo_json']
try:
with open(archivo_json, 'r', encoding='utf-8') as file:
datos = json.load(file)
repostajes_creados = 0
for repostaje_data in datos:
repostaje, creado = Repostaje.objects.get_or_create(
fecha=repostaje_data['fecha'],
defaults={
'kms': repostaje_data['kms'],
'litros': repostaje_data['litros'],
'descuento': repostaje_data['descuento'],
'importe': repostaje_data['importe'],
'precioxlitro': repostaje_data['precioxlitro'],
'kmsrecorridos': repostaje_data['kmsrecorridos'],
'consumo': repostaje_data['consumo'],
'vehiculo': repostaje_data['vehiculo']
}
)
if creado:
repostajes_creados += 1
self.stdout.write(self.style.SUCCESS(f'Se importaron {repostajes_creados} repostajes correctamente.'))
except FileNotFoundError:
self.stderr.write(self.style.ERROR(f"El archivo {archivo_json} no se encontró."))
except json.JSONDecodeError:
self.stderr.write(self.style.ERROR("Error al leer el archivo JSON. Asegúrate de que el formato sea correcto."))