vbv/server/vbv_lernwelt/course/services.py

24 lines
779 B
Python

from vbv_lernwelt.course.models import CourseCompletion, CourseCompletionStatus
from vbv_lernwelt.learnpath.utils import get_wagtail_type
def mark_course_completion(
page, user, course_session, completion_status=CourseCompletionStatus.SUCCESS.value
):
if completion_status not in CourseCompletionStatus.__members__:
raise ValueError(
f"Invalid value for CourseCompletionStatus: {completion_status}"
)
# TODO: check if this page can be "marked" by user
cc, created = CourseCompletion.objects.get_or_create(
user_id=user.id,
page_id=page.id,
course_session_id=course_session.id,
)
cc.completion_status = completion_status
cc.page_type = get_wagtail_type(page.specific)
cc.save()
return cc