Flatlogic Bot b4bdae6d89 0.0.1
2026-02-05 09:02:25 +00:00

76 lines
3.0 KiB
Python

from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
from core.models import Plant, Category, Product, Inventory, Machine, WorkOrder, Inspection
import random
from datetime import date, timedelta
class Command(BaseCommand):
help = 'Seeds the database with initial demo data for the ERP'
def handle(self, *args, **kwargs):
self.stdout.write('Seeding data...')
# Ensure we have an admin user
if not User.objects.filter(username='admin').exists():
User.objects.create_superuser('admin', 'admin@example.com', 'admin')
self.stdout.write('Superuser "admin" created.')
# Plants
p1, _ = Plant.objects.get_or_create(name='Istanbul Facility', location='Istanbul, TR')
p2, _ = Plant.objects.get_or_create(name='Ankara Facility', location='Ankara, TR')
p3, _ = Plant.objects.get_or_create(name='Izmir Facility', location='Izmir, TR')
# Categories
cat_raw, _ = Category.objects.get_or_create(name='Raw Materials')
cat_final, _ = Category.objects.get_or_create(name='Finished Goods')
cat_comp, _ = Category.objects.get_or_create(name='Components')
# Products
prod1, _ = Product.objects.get_or_create(name='Steel Plate', sku='RAW-001', category=cat_raw)
prod2, _ = Product.objects.get_or_create(name='Microchip A1', sku='COMP-101', category=cat_comp)
prod3, _ = Product.objects.get_or_create(name='Smart Widget', sku='FIN-505', category=cat_final)
# Inventory
for p in [p1, p2, p3]:
for prod in [prod1, prod2, prod3]:
Inventory.objects.get_or_create(
plant=p,
product=prod,
lot_number=f"LOT-{random.randint(1000, 9999)}",
defaults={'quantity': random.uniform(10, 500)}
)
# Machines
m1, _ = Machine.objects.get_or_create(name='Laser Cutter X1', plant=p1, status='active')
m2, _ = Machine.objects.get_or_create(name='Assembly Line 3', plant=p2, status='active')
m3, _ = Machine.objects.get_or_create(name='Quality Tester T8', plant=p3, status='maintenance')
# Work Orders
wo1, _ = WorkOrder.objects.get_or_create(
order_number='WO-2026-001',
plant=p1,
product=prod3,
quantity=100,
machine=m1,
status='in_progress'
)
wo2, _ = WorkOrder.objects.get_or_create(
order_number='WO-2026-002',
plant=p2,
product=prod3,
quantity=50,
machine=m2,
status='planned'
)
# Inspections
admin_user = User.objects.get(username='admin')
Inspection.objects.get_or_create(
work_order=wo1,
inspector=admin_user,
result='pass',
notes='All systems nominal.'
)
self.stdout.write(self.style.SUCCESS('Successfully seeded demo data.'))