prije gemini provjere
This commit is contained in:
75
001.BACKEND/kupci/management/commands/populate_kupci.py
Normal file
75
001.BACKEND/kupci/management/commands/populate_kupci.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import random
|
||||
from django.core.management.base import BaseCommand
|
||||
from faker import Faker
|
||||
from kupci.models import Kupac
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Popunjava bazu podataka s testnim kupcima spremnim za logistički modul'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
'total',
|
||||
type=int,
|
||||
help='Broj kupaca koje želiš kreirati',
|
||||
default=10
|
||||
)
|
||||
|
||||
def handle(self, *args, **kwargs):
|
||||
total = kwargs['total']
|
||||
fake = Faker(['hr_HR'])
|
||||
|
||||
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):
|
||||
tip = random.choice(['pravno', 'fizicko'])
|
||||
|
||||
if tip == 'pravno':
|
||||
naziv = fake.company()
|
||||
else:
|
||||
naziv = fake.name()
|
||||
|
||||
# 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:
|
||||
# Upotrebljavamo create, a jedinstvenost OIB-a hvatamo u iznimci
|
||||
Kupac.objects.create(
|
||||
naziv=naziv,
|
||||
oib=oib,
|
||||
email=fake.email(),
|
||||
telefon=telefon,
|
||||
adresa=fake.street_address(),
|
||||
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 usklađen s modulom operativne logistike.",
|
||||
aktivno=True
|
||||
)
|
||||
created_count += 1
|
||||
except Exception as e:
|
||||
# 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 u bazu!'))
|
||||
Reference in New Issue
Block a user