chore: analytics for course completion
This commit is contained in:
@@ -117,6 +117,7 @@ import { BookOpen, Users, Star } from 'lucide-vue-next'
|
||||
import { computed, inject } from 'vue'
|
||||
import { Button, createResource } from 'frappe-ui'
|
||||
import { createToast } from '@/utils/'
|
||||
import { capture } from '@/telemetry'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const router = useRouter()
|
||||
@@ -155,6 +156,9 @@ function enrollStudent() {
|
||||
course: props.course.data.name,
|
||||
})
|
||||
.then(() => {
|
||||
capture('enrolled_in_course', {
|
||||
course: props.course.data.name,
|
||||
})
|
||||
createToast({
|
||||
title: 'Enrolled Successfully',
|
||||
icon: 'check',
|
||||
|
||||
@@ -7,5 +7,4 @@ from frappe.utils.telemetry import capture
|
||||
|
||||
|
||||
class CourseChapter(Document):
|
||||
def after_insert(self):
|
||||
capture("chapter_created", "lms")
|
||||
pass
|
||||
|
||||
@@ -24,9 +24,6 @@ class CourseLesson(Document):
|
||||
for section in dynamic_documents:
|
||||
self.update_lesson_name_in_document(section)
|
||||
|
||||
def after_insert(self):
|
||||
capture("lesson_created", "lms")
|
||||
|
||||
def update_lesson_name_in_document(self, section):
|
||||
doctype_map = {"Exercise": "LMS Exercise", "Quiz": "LMS Quiz"}
|
||||
macros = find_macros(self.body)
|
||||
@@ -116,6 +113,8 @@ def save_progress(lesson, course):
|
||||
).save(ignore_permissions=True)
|
||||
|
||||
progress = get_course_progress(course)
|
||||
capture_progress_for_analytics(progress, course)
|
||||
|
||||
# Had to get doc, as on_change doesn't trigger when you use set_value. The trigger is necesary for badge to get assigned.
|
||||
enrollment = frappe.get_doc("LMS Enrollment", membership)
|
||||
enrollment.progress = progress
|
||||
@@ -125,6 +124,11 @@ def save_progress(lesson, course):
|
||||
return progress
|
||||
|
||||
|
||||
def capture_progress_for_analytics(progress, course):
|
||||
if progress in [25, 50, 75, 100]:
|
||||
capture("lesson_progress", "lms", {"course": course, "progress": progress})
|
||||
|
||||
|
||||
def get_quiz_progress(lesson):
|
||||
lesson_details = frappe.db.get_value(
|
||||
"Course Lesson", lesson, ["body", "content"], as_dict=1
|
||||
|
||||
@@ -48,9 +48,6 @@ class LMSCourse(Document):
|
||||
if not self.upcoming and self.has_value_changed("upcoming"):
|
||||
self.send_email_to_interested_users()
|
||||
|
||||
def after_insert(self):
|
||||
capture("course_created", "lms")
|
||||
|
||||
def send_email_to_interested_users(self):
|
||||
interested_users = frappe.get_all(
|
||||
"LMS Course Interest", {"course": self.name}, ["name", "user"]
|
||||
|
||||
@@ -17,8 +17,7 @@ def get_context():
|
||||
csrf_token = frappe.sessions.get_csrf_token()
|
||||
frappe.db.commit() # nosemgrep
|
||||
context.csrf_token = csrf_token
|
||||
if frappe.session.user != "Guest":
|
||||
capture("active_site", "lms")
|
||||
capture("active_site", "lms")
|
||||
return context
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user