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