diff --git a/frontend/src/pages/SCORMChapter.vue b/frontend/src/pages/SCORMChapter.vue index b3dfe0d5..02be01e9 100644 --- a/frontend/src/pages/SCORMChapter.vue +++ b/frontend/src/pages/SCORMChapter.vue @@ -109,9 +109,10 @@ const getDataFromLMS = (key) => { let saveTimeout = null const debouncedSaveProgress = (scormDetails) => { + if (isSuccessfullyCompleted.value) return clearTimeout(saveTimeout) saveTimeout = setTimeout(() => { - saveProgress(scormDetails) + if (!isSuccessfullyCompleted.value) saveProgress(scormDetails) }, 300) } @@ -124,6 +125,7 @@ const saveDataToLMS = (key, value) => { (key === 'cmi.completion_status' && value === 'incomplete') if (isLessonStatus || isCompletionStatus) { + if (isSuccessfullyCompleted.value) return isSuccessfullyCompleted.value = true } diff --git a/lms/lms/doctype/course_lesson/course_lesson.py b/lms/lms/doctype/course_lesson/course_lesson.py index c47e56c7..5c0ebd6e 100644 --- a/lms/lms/doctype/course_lesson/course_lesson.py +++ b/lms/lms/doctype/course_lesson/course_lesson.py @@ -78,7 +78,7 @@ def save_progress(lesson: str, course: str, scorm_details: dict = None): if not membership: return 0 - frappe.db.set_value("LMS Enrollment", membership, "current_lesson", lesson) + frappe.db.set_value("LMS Enrollment", membership, "current_lesson", lesson, update_modified=False) progress_already_exists = frappe.db.exists( "LMS Course Progress", {"lesson": lesson, "member": frappe.session.user} ) @@ -133,6 +133,7 @@ def save_progress(lesson: str, course: str, scorm_details: dict = None): # Had to get doc, as on_change doesn't trigger when you use set_value. The trigger is necessary for badge to get assigned. enrollment = frappe.get_doc("LMS Enrollment", membership) enrollment.progress = progress + enrollment.flags.ignore_version = True enrollment.save() enrollment.run_method("on_change")