From e2c0355821a8302ee24e4ce5560487cbadc56627 Mon Sep 17 00:00:00 2001 From: raizasafeel <89463672+raizasafeel@users.noreply.github.com> Date: Wed, 14 Jan 2026 23:25:11 +0530 Subject: [PATCH] refactor(batch): simplify dashboard with get_count and conditional rendering --- .../src/components/AdminBatchDashboard.vue | 7 ++++- frontend/src/components/BatchStudents.vue | 9 +++--- lms/lms/utils.py | 28 +++++-------------- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/AdminBatchDashboard.vue b/frontend/src/components/AdminBatchDashboard.vue index 947180c5..135fe84c 100644 --- a/frontend/src/components/AdminBatchDashboard.vue +++ b/frontend/src/components/AdminBatchDashboard.vue @@ -82,18 +82,23 @@ const studentCount = createResource({ const assessmentCount = createResource({ url: 'lms.lms.utils.get_batch_assessment_count', - params: { batch: props.batch?.data?.name }, + cache: ['batch_assessment_count', props.batch?.data?.name], + params: { + batch: props.batch?.data?.name, + }, auto: true, }) const chartData = createResource({ url: 'lms.lms.utils.get_batch_chart_data', + cache: ['batch_chart_data', props.batch?.data?.name], params: { batch: props.batch?.data?.name }, auto: true, }) const certificationCount = createResource({ url: 'frappe.client.get_count', + cache: ['batch_certificate_count', props.batch?.data?.name], params: { doctype: 'LMS Certificate', filters: { batch_name: props.batch?.data?.name }, diff --git a/frontend/src/components/BatchStudents.vue b/frontend/src/components/BatchStudents.vue index 26665db5..1eb56e17 100644 --- a/frontend/src/components/BatchStudents.vue +++ b/frontend/src/components/BatchStudents.vue @@ -88,8 +88,8 @@ -
-
@@ -146,10 +146,11 @@ const props = defineProps({ }) const studentCount = createResource({ - url: 'lms.lms.utils.get_batch_student_count', + url: 'frappe.client.get_count', cache: ['batch_student_count', props.batch?.data?.name], params: { - batch: props.batch?.data?.name, + doctype: 'LMS Batch Enrollment', + filters: { batch: props.batch?.data?.name }, }, auto: true, }) diff --git a/lms/lms/utils.py b/lms/lms/utils.py index 0acb2565..9cd9a516 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -1355,6 +1355,13 @@ def get_exercise_details(assessment, member): assessment.edit_url = f"/exercises/{assessment.assessment_name}/submission/new" +@frappe.whitelist() +def get_batch_assessment_count(batch): + if not frappe.db.exists("LMS Batch", batch): + frappe.throw(_("The specified batch does not exist.")) + return frappe.db.count("LMS Assessment", {"parent": batch}) + + @frappe.whitelist() def get_batch_students(filters, offset=0, limit_start=0, limit_page_length=None, limit=None): # limit_start and limit_page_length are used for backward compatibility @@ -1383,27 +1390,6 @@ def get_batch_students(filters, offset=0, limit_start=0, limit_page_length=None, return students -@frappe.whitelist() -def get_batch_student_count(batch): - if not frappe.db.exists("LMS Batch", batch): - frappe.throw(_("The specified batch does not exist.")) - return frappe.db.count("LMS Batch Enrollment", filters={"batch": batch}) - - -@frappe.whitelist() -def get_batch_certificate_count(batch): - if not frappe.db.exists("LMS Batch", batch): - frappe.throw(_("The specified batch does not exist.")) - return frappe.db.count("LMS Certificate", filters={"batch_name": batch}) - - -@frappe.whitelist() -def get_batch_assessment_count(batch): - if not frappe.db.exists("LMS Batch", batch): - frappe.throw(_("The specified batch does not exist.")) - return frappe.db.count("LMS Assessment", filters={"parent": batch}) - - def get_course_completion_stats(batch): """Get completion counts per course in batch""" BatchCourse = frappe.qb.DocType("Batch Course")