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!'))