From 0e6df8396147ee7b4d99d91dbdd0f36ae3f2dc2c Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 27 Nov 2024 22:47:45 +0530 Subject: [PATCH] fix: patched quiz submission data --- frontend/src/components/OnboardingBanner.vue | 22 ++++---- frontend/src/pages/Programs.vue | 14 ++++- frontend/src/pages/QuizSubmission.vue | 55 +++++++++++-------- lms/lms/doctype/lms_quiz/lms_quiz.py | 2 +- lms/lms/utils.py | 3 +- lms/patches.txt | 3 +- .../v2_0/update_quiz_submission_data.py | 47 ++++++++++++++++ 7 files changed, 107 insertions(+), 39 deletions(-) create mode 100644 lms/patches/v2_0/update_quiz_submission_data.py diff --git a/frontend/src/components/OnboardingBanner.vue b/frontend/src/components/OnboardingBanner.vue index 7660e79c..d26d8951 100644 --- a/frontend/src/components/OnboardingBanner.vue +++ b/frontend/src/components/OnboardingBanner.vue @@ -11,11 +11,11 @@ @click="redirectToCourseForm()" class="flex items-center space-x-2" :class="{ - 'cursor-pointer': !onboardingDetails.data.course_created.length, + 'cursor-pointer': !onboardingDetails.data.course_created?.length, }" > @@ -32,13 +32,13 @@ class="flex items-center space-x-2" :class="{ 'cursor-pointer': - onboardingDetails.data.course_created.length && - !onboardingDetails.data.chapter_created.length, - 'text-gray-400': !onboardingDetails.data.course_created.length, + onboardingDetails.data.course_created?.length && + !onboardingDetails.data.chapter_created?.length, + 'text-gray-400': !onboardingDetails.data.course_created?.length, }" > @@ -55,15 +55,15 @@ class="flex items-center space-x-2" :class="{ 'cursor-pointer': - onboardingDetails.data.course_created.length && - onboardingDetails.data.chapter_created.length, + onboardingDetails.data.course_created?.length && + onboardingDetails.data.chapter_created?.length, 'text-gray-400': - !onboardingDetails.data.course_created.length || - !onboardingDetails.data.chapter_created.length, + !onboardingDetails.data.course_created?.length || + !onboardingDetails.data.chapter_created?.length, }" > diff --git a/frontend/src/pages/Programs.vue b/frontend/src/pages/Programs.vue index c0fc51e1..1e963abc 100644 --- a/frontend/src/pages/Programs.vue +++ b/frontend/src/pages/Programs.vue @@ -118,16 +118,28 @@ import { Dialog, FormControl, } from 'frappe-ui' -import { computed, inject, ref } from 'vue' +import { computed, inject, onMounted, ref } from 'vue' import { BookOpen, Edit, Plus } from 'lucide-vue-next' import CourseCard from '@/components/CourseCard.vue' import { useRouter } from 'vue-router' import { showToast, singularize } from '@/utils' +import { useSettings } from '@/stores/settings' const user = inject('$user') const showDialog = ref(false) const router = useRouter() const title = ref('') +const settings = useSettings() + +onMounted(() => { + if ( + !settings.learningPaths.data && + !user.data?.is_moderator && + !user.data?.is_instructor + ) { + router.push({ name: 'Courses' }) + } +}) const programs = createResource({ url: 'lms.lms.utils.get_programs', diff --git a/frontend/src/pages/QuizSubmission.vue b/frontend/src/pages/QuizSubmission.vue index 0bc0729b..a6363abf 100644 --- a/frontend/src/pages/QuizSubmission.vue +++ b/frontend/src/pages/QuizSubmission.vue @@ -15,38 +15,45 @@ -
-
- - +
+
+ {{ submisisonDetails.doc.member_name }}
+
+
+ + +
-
- - +
+ + +
-
{{ row.idx }}. {{ row.question }}
+
+ +
diff --git a/lms/lms/doctype/lms_quiz/lms_quiz.py b/lms/lms/doctype/lms_quiz/lms_quiz.py index 30630ef1..61328891 100644 --- a/lms/lms/doctype/lms_quiz/lms_quiz.py +++ b/lms/lms/doctype/lms_quiz/lms_quiz.py @@ -134,7 +134,6 @@ def quiz_summary(quiz, results): result["marks"] = marks score += marks - del result["question_name"] else: result["is_correct"] = 0 is_open_ended = True @@ -146,6 +145,7 @@ def quiz_summary(quiz, results): submission = frappe.new_doc("LMS Quiz Submission") # Score and percentage are calculated by the controller function + print(results) submission.update( { "doctype": "LMS Quiz Submission", diff --git a/lms/lms/utils.py b/lms/lms/utils.py index 0b973308..9e920062 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -858,7 +858,8 @@ def get_telemetry_boot_info(): @frappe.whitelist() def is_onboarding_complete(): if not has_course_moderator_role(): - return {"is_onboarded": False} + return {"is_onboarded": True} + course_created = frappe.db.a_row_exists("LMS Course") chapter_created = frappe.db.a_row_exists("Course Chapter") lesson_created = frappe.db.a_row_exists("Course Lesson") diff --git a/lms/patches.txt b/lms/patches.txt index 4f11ed08..c365311d 100644 --- a/lms/patches.txt +++ b/lms/patches.txt @@ -94,4 +94,5 @@ lms.patches.v2_0.delete_certificate_request_notification #18-09-2024 lms.patches.v2_0.add_course_statistics #21-10-2024 lms.patches.v2_0.give_discussions_permissions lms.patches.v2_0.delete_web_forms -lms.patches.v2_0.update_desk_access_for_lms_roles \ No newline at end of file +lms.patches.v2_0.update_desk_access_for_lms_roles +lms.patches.v2_0.update_quiz_submission_data \ No newline at end of file diff --git a/lms/patches/v2_0/update_quiz_submission_data.py b/lms/patches/v2_0/update_quiz_submission_data.py new file mode 100644 index 00000000..88d78ea9 --- /dev/null +++ b/lms/patches/v2_0/update_quiz_submission_data.py @@ -0,0 +1,47 @@ +import frappe + + +def execute(): + set_question_data() + set_submission_data() + + +def set_question_data(): + questions = frappe.get_all("LMS Quiz Question", fields=["name", "question"]) + + for question in questions: + question_doc = frappe.db.get_value( + "LMS Question", question.question, ["question", "type"], as_dict=1 + ) + frappe.db.set_value( + "LMS Quiz Question", + question.name, + {"question_detail": question_doc.question, "type": question_doc.type}, + ) + + +def set_submission_data(): + submissions = frappe.get_all("LMS Quiz Submission", fields=["name", "quiz"]) + + for submission in submissions: + quiz_title = frappe.db.get_value("LMS Quiz", submission.quiz, "title") + frappe.db.set_value("LMS Quiz Submission", submission.name, "quiz_title", quiz_title) + + questions = frappe.get_all( + "LMS Quiz Result", filters={"parent": submission.name}, fields=["question_name"] + ) + + for question in questions: + if question.question_name: + marks_out_of = frappe.db.get_value( + "LMS Quiz Question", + {"parent": submission.quiz, "question": question.question_name}, + ["marks"], + ) + + frappe.db.set_value( + "LMS Quiz Result", + {"parent": submission.name, "question_name": question.question_name}, + "marks_out_of", + marks_out_of, + )