From 078f18d99c02c525468ad40c0555bcf6f643cf31 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Thu, 15 Jan 2026 10:18:09 +0530 Subject: [PATCH] chore: capture quiz creation and certificate creation for analytics --- frontend/src/pages/BatchForm.vue | 1 - frontend/src/pages/Quizzes.vue | 3 +++ lms/lms/doctype/lms_certificate/lms_certificate.py | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/BatchForm.vue b/frontend/src/pages/BatchForm.vue index 099e9daa..a90223ca 100644 --- a/frontend/src/pages/BatchForm.vue +++ b/frontend/src/pages/BatchForm.vue @@ -464,7 +464,6 @@ const validateFields = () => { !['description', 'batch_details'].includes(key) && typeof batch[key] === 'string' ) { - console.log(key) batch[key] = escapeHTML(batch[key]) } }) diff --git a/frontend/src/pages/Quizzes.vue b/frontend/src/pages/Quizzes.vue index f01742ea..ca0a77fa 100644 --- a/frontend/src/pages/Quizzes.vue +++ b/frontend/src/pages/Quizzes.vue @@ -144,9 +144,11 @@ import { computed, inject, onMounted, ref, watch } from 'vue' import { Plus } from 'lucide-vue-next' import { sessionStore } from '@/stores/session' import { escapeHTML } from '@/utils' +import { useTelemetry } from 'frappe-ui/frappe' import EmptyState from '@/components/EmptyState.vue' const { brand } = sessionStore() +const { capture } = useTelemetry() const user = inject('$user') const dayjs = inject('$dayjs') const router = useRouter() @@ -216,6 +218,7 @@ const insertQuiz = (close) => { toast.success(__('Quiz created successfully')) close() title.value = '' + capture('quiz_created') router.push({ name: 'QuizForm', params: { diff --git a/lms/lms/doctype/lms_certificate/lms_certificate.py b/lms/lms/doctype/lms_certificate/lms_certificate.py index 75c64e6f..ec9f5231 100644 --- a/lms/lms/doctype/lms_certificate/lms_certificate.py +++ b/lms/lms/doctype/lms_certificate/lms_certificate.py @@ -7,6 +7,7 @@ from frappe.email.doctype.email_template.email_template import get_email_templat from frappe.model.document import Document from frappe.model.naming import make_autoname from frappe.utils import nowdate +from frappe.utils.telemetry import capture class LMSCertificate(Document): @@ -17,6 +18,10 @@ class LMSCertificate(Document): self.name = make_autoname("hash", self.doctype) def after_insert(self): + self.send_certification_email() + capture("certificate_issued", "lms") + + def send_certification_email(self): outgoing_email_account = frappe.get_cached_value( "Email Account", {"default_outgoing": 1, "enable_outgoing": 1}, "name" )