103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
from datetime import datetime, timedelta
|
|
from typing import List, Tuple
|
|
|
|
from django.contrib.auth.hashers import make_password
|
|
from django.utils import timezone
|
|
|
|
from vbv_lernwelt.core.models import User
|
|
from vbv_lernwelt.course.factories import CoursePageFactory
|
|
from vbv_lernwelt.course.models import (
|
|
Course,
|
|
CoursePage,
|
|
CourseSession,
|
|
CourseSessionUser,
|
|
)
|
|
from vbv_lernwelt.course.utils import get_wagtail_default_site
|
|
from vbv_lernwelt.course_session.models import CourseSessionAttendanceCourse
|
|
from vbv_lernwelt.duedate.models import DueDate
|
|
from vbv_lernwelt.learnpath.models import Circle, LearningPath
|
|
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
|
CircleFactory,
|
|
LearningContentAttendanceCourseFactory,
|
|
LearningPathFactory,
|
|
)
|
|
|
|
|
|
def create_course(title: str) -> Tuple[Course, CoursePage]:
|
|
course = Course.objects.create(title=title, category_name="Handlungsfeld")
|
|
|
|
course_page = CoursePageFactory(
|
|
title="Test Lehrgang",
|
|
parent=get_wagtail_default_site().root_page,
|
|
course=course,
|
|
)
|
|
course.slug = course_page.slug
|
|
course.save()
|
|
|
|
return course, course_page
|
|
|
|
|
|
def create_user(username: str) -> User:
|
|
return User.objects.create_user(
|
|
username=username,
|
|
password=make_password("test"),
|
|
email=f"{username}@example.com",
|
|
language="de",
|
|
)
|
|
|
|
|
|
def create_course_session(course: Course, title: str) -> CourseSession:
|
|
return CourseSession.objects.create(
|
|
course=course,
|
|
title=title,
|
|
import_id=title,
|
|
generation="2023",
|
|
start_date=timezone.now(),
|
|
)
|
|
|
|
|
|
def add_course_session_user(
|
|
course_session: CourseSession, user: User, role: CourseSessionUser.Role
|
|
) -> CourseSessionUser:
|
|
return CourseSessionUser.objects.create(
|
|
course_session=course_session,
|
|
user=user,
|
|
role=role,
|
|
)
|
|
|
|
|
|
def create_circle(
|
|
title: str, course_page: CoursePage, learning_path: LearningPath | None = None
|
|
) -> Tuple[Circle, LearningPath]:
|
|
if not learning_path:
|
|
learning_path = LearningPathFactory(title="Test Lernpfad", parent=course_page)
|
|
|
|
circle = CircleFactory(
|
|
title=title, parent=learning_path, description="Circle Description"
|
|
)
|
|
|
|
return circle, learning_path
|
|
|
|
|
|
def create_attendance_course(
|
|
course_session: CourseSession,
|
|
circle: Circle,
|
|
attendance_user_list: List,
|
|
due_date_end: datetime,
|
|
) -> CourseSessionAttendanceCourse:
|
|
learning_content_dummy = LearningContentAttendanceCourseFactory(
|
|
title="Lerninhalt Dummy",
|
|
parent=circle,
|
|
)
|
|
|
|
return CourseSessionAttendanceCourse.objects.create(
|
|
course_session=course_session,
|
|
learning_content=learning_content_dummy,
|
|
attendance_user_list=attendance_user_list,
|
|
due_date=DueDate.objects.create(
|
|
course_session=course_session,
|
|
start=due_date_end - timedelta(hours=8),
|
|
end=due_date_end,
|
|
),
|
|
)
|