60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
from django.core.management.base import BaseCommand
|
|
from django.contrib.auth.models import User
|
|
from core.models import Teacher, Student, Classroom, City, Governorate
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Creates test users: one teacher and one student'
|
|
|
|
def handle(self, *args, **options):
|
|
# 1. Setup Dependencies
|
|
gov, _ = Governorate.objects.get_or_create(
|
|
name_en="Muscat",
|
|
defaults={'name_ar': "مسقط"}
|
|
)
|
|
city, _ = City.objects.get_or_create(
|
|
name_en="Seeb",
|
|
defaults={'name_ar': "السيب", 'governorate': gov}
|
|
)
|
|
classroom, _ = Classroom.objects.get_or_create(
|
|
name_en="Grade 10",
|
|
defaults={'name_ar': "الصف 10", 'description': "Test Classroom"}
|
|
)
|
|
|
|
# 2. Create Teacher
|
|
t_user, created = User.objects.get_or_create(username='teacher_test')
|
|
if created:
|
|
t_user.set_password('password123')
|
|
t_user.email = 'teacher@example.com'
|
|
t_user.first_name = 'John'
|
|
t_user.last_name = 'Doe (Teacher)'
|
|
t_user.save()
|
|
|
|
Teacher.objects.create(
|
|
user=t_user,
|
|
bio="I am a test teacher specializing in Mathematics.",
|
|
specialization="Mathematics"
|
|
)
|
|
self.stdout.write(self.style.SUCCESS(f"Created teacher: {t_user.username} (password123)"))
|
|
else:
|
|
self.stdout.write(self.style.WARNING(f"User {t_user.username} already exists"))
|
|
|
|
# 3. Create Student
|
|
s_user, created = User.objects.get_or_create(username='student_test')
|
|
if created:
|
|
s_user.set_password('password123')
|
|
s_user.email = 'student@example.com'
|
|
s_user.first_name = 'Jane'
|
|
s_user.last_name = 'Smith (Student)'
|
|
s_user.save()
|
|
|
|
Student.objects.create(
|
|
user=s_user,
|
|
classroom=classroom,
|
|
city=city,
|
|
governorate=gov,
|
|
mobile_number="1234567890",
|
|
is_email_verified=True
|
|
)
|
|
self.stdout.write(self.style.SUCCESS(f"Created student: {s_user.username} (password123)"))
|
|
else:
|
|
self.stdout.write(self.style.WARNING(f"User {s_user.username} already exists")) |