86 lines
3.1 KiB
Python
86 lines
3.1 KiB
Python
import random
|
|
from datetime import date, timedelta
|
|
from django.core.management.base import BaseCommand
|
|
from faker import Faker
|
|
from fleet.models import Stroj
|
|
from kupci.models import Kupac
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Popunjava bazu podataka isključivo Liebherr strojevima koristeći Faker'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
'total',
|
|
type=int,
|
|
help='Broj Liebherr strojeva koje želiš kreirati',
|
|
default=10
|
|
)
|
|
|
|
def handle(self, *args, **kwargs):
|
|
total = kwargs['total']
|
|
fake = Faker(['hr_HR']) # Koristimo hrvatski lokalitet
|
|
kupci = list(Kupac.objects.all())
|
|
|
|
if not kupci:
|
|
self.stdout.write(self.style.ERROR("Greška: Nema kupaca u bazi. Prvo pokreni populate_kupci!"))
|
|
return
|
|
|
|
# Katalog usklađen s tvojim TIP_STROJA choices
|
|
liebherr_katalog = {
|
|
'dizalica_toranj': [
|
|
'132 EC-H 8 Litronic',
|
|
'280 EC-H 12',
|
|
'81 K.1',
|
|
'172 EC-B 8'
|
|
],
|
|
'dizalica_auto': [
|
|
'LTM 1030-2.1',
|
|
'LTM 1050-3.1',
|
|
'LTM 1060-3.1',
|
|
'LTM 1120-4.1',
|
|
'LTC 1050-3.1'
|
|
]
|
|
}
|
|
|
|
self.stdout.write(self.style.MIGRATE_HEADING(f'🚀 Generiram {total} Liebherr strojeva...'))
|
|
|
|
created_count = 0
|
|
for _ in range(total):
|
|
# Odabir tipa (usklađeno s tvojim modelom)
|
|
tip = random.choice(['dizalica_toranj', 'dizalica_auto'])
|
|
model_naziv = random.choice(liebherr_katalog[tip])
|
|
|
|
# Faker za generiranje serijskog broja i registracije
|
|
serijski = f"LE-{fake.bothify(text='######')}" # npr. LE-482931
|
|
|
|
# Registracija samo za autodizalice (Faker format)
|
|
reg = None
|
|
if tip == 'dizalica_auto':
|
|
# Generira format sličan ZG-1234-LH
|
|
reg = f"ZG-{fake.numerify('####')}-LH"
|
|
|
|
# Radni sati
|
|
sati = random.uniform(500.0, 12000.0) if tip == 'dizalica_toranj' else random.uniform(100.0, 5000.0)
|
|
|
|
# Faker za datume (unutar zadnjih godinu dana)
|
|
datum_atesta = fake.date_between(start_date='-1y', end_date='today')
|
|
|
|
try:
|
|
Stroj.objects.create(
|
|
vlasnik=random.choice(kupci),
|
|
naziv=f"Liebherr {model_naziv}",
|
|
serijski_broj=serijski,
|
|
marka='Liebherr',
|
|
model_stroja=model_naziv,
|
|
godina_proizvodnje=random.randint(2015, 2024),
|
|
tip=tip,
|
|
radni_sati=round(sati, 2),
|
|
registracija=reg,
|
|
datum_zadnjeg_atesta=datum_atesta
|
|
)
|
|
created_count += 1
|
|
except Exception as e:
|
|
self.stderr.write(f"Greška kod S/N {serijski}: {e}")
|
|
continue
|
|
|
|
self.stdout.write(self.style.SUCCESS(f'✅ Uspješno dodano {created_count} Liebherr strojeva!')) |