71 lines
2.7 KiB
Python
71 lines
2.7 KiB
Python
import random
|
|
from django.core.management.base import BaseCommand
|
|
from django.core.exceptions import ValidationError
|
|
from faker import Faker
|
|
from fleet.models import Vozilo
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Popunjava bazu podataka s gospodarskim vozilima koristeći Faker'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
'total',
|
|
type=int,
|
|
help='Broj vozila koje želiš kreirati',
|
|
default=5
|
|
)
|
|
|
|
def handle(self, *args, **kwargs):
|
|
total = kwargs['total']
|
|
fake = Faker(['hr_HR'])
|
|
|
|
# Modeli koji se pojavljuju u tvom radnom nalogu (CSV)
|
|
modeli_podaci = [
|
|
'VW Transporter T6',
|
|
'Mercedes-Benz Vito',
|
|
'Citroen Jumper',
|
|
'Ford Transit Custom',
|
|
'Renault Kangoo Maxi',
|
|
'Peugeot Boxer',
|
|
'Opel Vivaro',
|
|
]
|
|
|
|
self.stdout.write(self.style.MIGRATE_HEADING(f'🚀 Kreiram {total} vozila u flotu...'))
|
|
|
|
brojac = 0
|
|
while brojac < total:
|
|
model_naziv = random.choice(modeli_podaci)
|
|
|
|
# Generiranje registracije koristeći Faker numerify/bothify
|
|
# Format: ZG 1234 AB
|
|
gradovi = ['ZG', 'ST', 'RI', 'OS', 'VZ', 'PU', 'KA', 'KC']
|
|
grad = random.choice(gradovi)
|
|
reg_oznaka = fake.numerify(text='####') # npr. 6732
|
|
reg_slova = fake.bothify(text='??', letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ') # npr. II
|
|
registracija = f"{grad}{reg_oznaka}{reg_slova}"
|
|
|
|
# Kilometri: Koristimo tvoju logiku da trenutni budu veći od početnih
|
|
pocetni = random.randint(0, 150000)
|
|
dodatni = random.randint(500, 20000)
|
|
trenutni = pocetni + dodatni
|
|
|
|
try:
|
|
# Koristimo registraciju u nazivu radi lakšeg prepoznavanja u Astro frontendu
|
|
vozilo = Vozilo.objects.create(
|
|
naziv=f"{model_naziv} ({grad})",
|
|
registracija=registracija,
|
|
pocetni_kilometri=pocetni,
|
|
trenutni_kilometri=trenutni,
|
|
status=random.choice(['aktivan', 'aktivan', 'servis', 'neaktivan'])
|
|
)
|
|
brojac += 1
|
|
self.stdout.write(f" ✅ Kreirano: {vozilo.naziv} [{vozilo.registracija}]")
|
|
|
|
except ValidationError:
|
|
# Ako Faker pogodi postojeću registraciju, samo nastavi dalje
|
|
continue
|
|
except Exception as e:
|
|
self.stderr.write(f" ❌ Greška: {e}")
|
|
break
|
|
|
|
self.stdout.write(self.style.SUCCESS(f'\nGotovo! Uspješno dodano {brojac} vozila u flotu.')) |