24 lines
779 B
Python
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
|