2026-02-17 06:26:19 +00:00

82 lines
2.8 KiB
Python

from django.core.management.base import BaseCommand
from core.models import Employee, Department, Shift, DailyAttendance, LeaveType, LeaveRequest
from django.utils import timezone
import datetime
class Command(BaseCommand):
help = 'Populates the database with demo data'
def handle(self, *args, **options):
# 1. Create Department
dept, _ = Department.objects.get_or_create(name='IT Department', code='IT', defaults={'description': 'Information Technology'})
# 2. Create Shift
shift, _ = Shift.objects.get_or_create(
name='General Shift',
defaults={'start_time': datetime.time(9, 0), 'end_time': datetime.time(17, 0)}
)
# 3. Create Employees
emp1, _ = Employee.objects.get_or_create(
employee_id='EMP001',
defaults={
'first_name': 'John',
'last_name': 'Doe',
'department': dept,
'shift': shift,
'position': 'Software Engineer',
'joined_date': datetime.date(2023, 1, 1),
'is_active': True
}
)
emp2, _ = Employee.objects.get_or_create(
employee_id='EMP002',
defaults={
'first_name': 'Jane',
'last_name': 'Smith',
'department': dept,
'shift': shift,
'position': 'Product Manager',
'joined_date': datetime.date(2023, 2, 1),
'is_active': True
}
)
# 4. Create Leave Types
lt, _ = LeaveType.objects.get_or_create(name='Sick Leave', defaults={'total_days': 12, 'color_code': '#e74c3c'})
# 5. Create Daily Attendance for today
today = timezone.now().date()
DailyAttendance.objects.get_or_create(
employee=emp1,
date=today,
defaults={
'check_in': datetime.time(9, 5),
'status': 'present',
'worked_hours': 8.0
}
)
DailyAttendance.objects.get_or_create(
employee=emp2,
date=today,
defaults={
'check_in': datetime.time(9, 45),
'status': 'late',
'is_late': True,
'worked_hours': 7.25
}
)
# 6. Create Pending Leave
LeaveRequest.objects.get_or_create(
employee=emp1,
leave_type=lt,
start_date=today + datetime.timedelta(days=5),
end_date=today + datetime.timedelta(days=7),
defaults={'reason': 'Medical checkup', 'status': 'pending'}
)
self.stdout.write(self.style.SUCCESS('Successfully populated demo data.'))