This commit is contained in:
2026-05-22 06:08:51 +00:00
parent c078a257e9
commit bafec754d1
131 changed files with 2346 additions and 893 deletions

View File

@@ -4,7 +4,7 @@ from faker import Faker
from kupci.models import Kupac
class Command(BaseCommand):
help = 'Popunjava bazu podataka s testnim kupcima'
help = 'Popunjava bazu podataka s testnim kupcima spremnim za logistički modul'
def add_arguments(self, parser):
parser.add_argument(
@@ -18,7 +18,21 @@ class Command(BaseCommand):
total = kwargs['total']
fake = Faker(['hr_HR'])
self.stdout.write(self.style.MIGRATE_HEADING(f'🚀 Kreiram {total} kupaca...'))
self.stdout.write(self.style.MIGRATE_HEADING(f'🚀 Kreiram {total} testnih kupaca...'))
# Kontrolirani skup gradova u nominativu za savršen ispis relacija i odredišta u logistici
hr_gradovi = [
{'grad': 'Zagreb', 'pbr': '10000'},
{'grad': 'Karlovac', 'pbr': '47000'},
{'grad': 'Ozalj', 'pbr': '47280'},
{'grad': 'Split', 'pbr': '21000'},
{'grad': 'Rijeka', 'pbr': '51000'},
{'grad': 'Osijek', 'pbr': '31000'},
{'grad': 'Varaždin', 'pbr': '42000'},
{'grad': 'Zadar', 'pbr': '23000'},
{'grad': 'Velika Gorica', 'pbr': '10410'},
{'grad': 'Sisak', 'pbr': '44000'}
]
created_count = 0
for _ in range(total):
@@ -29,27 +43,33 @@ class Command(BaseCommand):
else:
naziv = fake.name()
# Generiramo OIB (nasumičnih 11 znamenki)
# Generiramo OIB (točno 11 znamenki u string formatu)
oib = "".join([str(random.randint(0, 9)) for _ in range(11)])
# Odabiremo grad i poštanski broj u paru kako bi podaci imali smisla
lokacija = random.choice(hr_gradovi)
# Generiramo telefonski broj koji je čist i siguran za tel: linkove u Astru
pozivni = random.randint(1, 9)
telefon = f"+385 {pozivni} {random.randint(100, 999)}-{random.randint(1000, 9999)}"
try:
# Koristimo get_or_create ili create da izbjegnemo duplikate OIB-a
# ako je polje unique=True u modelu
# Upotrebljavamo create, a jedinstvenost OIB-a hvatamo u iznimci
Kupac.objects.create(
naziv=naziv,
oib=oib,
email=fake.email(),
telefon=fake.phone_number(),
telefon=telefon,
adresa=fake.street_address(),
grad=fake.city(),
postanski_broj=fake.postcode(),
grad=lokacija['grad'], # Usklađeno: čisti nominativ (npr. 'Karlovac')
postanski_broj=lokacija['pbr'], # Usklađeno: odgovarajući poštanski broj
tip=tip,
napomena="Automatski generiran testni kupac.",
napomena="Automatski generiran testni kupac usklađen s modulom operativne logistike.",
aktivno=True
)
created_count += 1
except Exception as e:
# Ako OIB slučajno bude isti, samo nastavi dalje
# Ako OIB slučajno kolidira (unutar unique=True), preskoči i nastavi generirati sljedećeg
continue
self.stdout.write(self.style.SUCCESS(f'✅ Uspješno dodano {created_count} novih kupaca!'))
self.stdout.write(self.style.SUCCESS(f'✅ Uspješno dodano {created_count} novih kupaca u bazu!'))

View File

@@ -1,4 +1,4 @@
# Generated by Django 6.0.5 on 2026-05-20 20:03
# Generated by Django 6.0.5 on 2026-05-22 03:52
from django.db import migrations, models