skillbox/server/users/services.py

72 lines
2.3 KiB
Python

from core.factories import UserFactory
from users.factories import SchoolClassFactory
from users.models import Role, UserRole, DEFAULT_SCHOOL_ID
def create_student(**kwargs):
try:
student_role = Role.objects.get_default_student_role()
except Role.DoesNotExist:
Role.objects.create_default_roles()
student_role = Role.objects.get_default_student_role()
user = UserFactory(
**kwargs
)
UserRole.objects.create(user=user, role=student_role)
return user
def create_users(data=None):
Role.objects.create_default_roles()
teacher_role = Role.objects.get_default_teacher_role()
if data is None:
teacher = UserFactory(username='teacher')
UserRole.objects.create(user=teacher, role=teacher_role)
students = []
for i in range(1, 7):
student = create_student(username='student{}'.format(i))
students.append(student)
SchoolClassFactory(
users=[teacher] + students,
name='skillbox',
)
teacher2 = UserFactory(username='teacher2')
UserRole.objects.create(user=teacher2, role=teacher_role)
student_second_class = create_student(username='student_second_class')
SchoolClassFactory(
users=[teacher2, student_second_class],
name='second_class'
)
else:
for school_class in data:
first, last = school_class.get('teacher')
teacher = UserFactory(
username='{}.{}'.format(first, last).lower(),
first_name=first,
last_name=last,
email='{}.{}@skillbox.example'.format(first, last).lower()
)
UserRole.objects.create(user=teacher, role=teacher_role)
students = []
for first, last in school_class.get('students'):
student = create_student(
username='{}.{}'.format(first, last).lower(),
first_name=first,
last_name=last,
email='{}.{}@skillbox.example'.format(first, last).lower()
)
students.append(student)
SchoolClassFactory(
users=students + [teacher],
name=school_class.get('class'),
code=school_class.get('code', '')
)