76 lines
3.0 KiB
Python
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.'))
|