From 23b2e8d6824f7c51f01116bc00fbbbd0b034a5e1 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Fri, 12 Jul 2024 15:56:50 +0530 Subject: [PATCH] feat: generate certificate from course page --- frontend/src/components/CourseCardOverlay.vue | 43 +++++++++++- frontend/src/components/VideoBlock.vue | 8 ++- frontend/src/pages/Lesson.vue | 41 +++++++++--- lms/hooks.py | 47 +------------ .../doctype/course_lesson/course_lesson.py | 11 +++- .../lms_assignment_submission.json | 1 - .../lms_certificate/lms_certificate.json | 24 +++++-- .../lms_certificate/lms_certificate.py | 7 +- lms/lms/doctype/lms_course/lms_course.json | 65 ++++++++---------- lms/lms/test_utils.py | 61 +---------------- lms/lms/utils.py | 66 ++----------------- 11 files changed, 146 insertions(+), 228 deletions(-) diff --git a/frontend/src/components/CourseCardOverlay.vue b/frontend/src/components/CourseCardOverlay.vue index 9c72f0bd..83a00ac6 100644 --- a/frontend/src/components/CourseCardOverlay.vue +++ b/frontend/src/components/CourseCardOverlay.vue @@ -63,7 +63,13 @@ {{ __('Start Learning') }} - { window.location.href = `/login?redirect-to=${window.location.pathname}` - }, 3000) + }, 2000) } else { const enrollStudentResource = createResource({ url: 'lms.lms.doctype.lms_enrollment.lms_enrollment.create_membership', @@ -179,6 +185,37 @@ const is_instructor = () => { } const canGetCertificate = computed(() => { - console.log(props.course) + if ( + props.course.data?.enable_certification && + props.course.data?.membership?.progress == 100 + ) { + return true + } + return false }) + +const certificate = createResource({ + url: 'lms.lms.doctype.lms_certificate.lms_certificate.create_certificate', + makeParams(values) { + return { + course: values.course, + } + }, + onSuccess(data) { + console.log(data) + window.open( + `/api/method/frappe.utils.print_format.download_pdf?doctype=LMS+Certificate&name=${ + data.name + }&format=${encodeURIComponent(data.template)}`, + '_blank' + ) + }, +}) + +const fetchCertificate = () => { + certificate.submit({ + course: props.course.data?.name, + member: user.data?.name, + }) +} diff --git a/frontend/src/components/VideoBlock.vue b/frontend/src/components/VideoBlock.vue index 7a0f463d..2d4705e9 100644 --- a/frontend/src/components/VideoBlock.vue +++ b/frontend/src/components/VideoBlock.vue @@ -1,10 +1,14 @@