feat: course progress summary report

This commit is contained in:
Jannat Patel
2025-07-03 13:02:57 +05:30
parent 5f065db991
commit 85da4f6d85
8 changed files with 481 additions and 204 deletions
+41
View File
@@ -1592,3 +1592,44 @@ def track_new_watch_time(lesson, video):
doc.watch_time = video.get("watch_time")
doc.member = frappe.session.user
doc.save()
@frappe.whitelist()
def get_course_progress_distribution(course):
all_progress = frappe.get_all("LMS Enrollment", {
"course": course,
}, pluck="progress")
average_progress = get_average_course_progress(all_progress)
progress_distribution = get_progress_distribution(all_progress)
return {
"average_progress": average_progress,
"progress_distribution": progress_distribution,
}
def get_average_course_progress(progress_list):
if not progress_list:
return 0
average_progress = sum(progress_list) / len(progress_list)
return flt(average_progress, frappe.get_system_settings("float_precision") or 3)
def get_progress_distribution(progressList):
distribution = [{
"category": "0-20%",
"count": len([p for p in progressList if 0 <= p < 20]),
}, {
"category": "20-40%",
"count": len([p for p in progressList if 20 <= p < 40]),
}, {
"category": "40-60%",
"count": len([p for p in progressList if 40 <= p < 60]),
}, {
"category": "60-80%",
"count": len([p for p in progressList if 60 <= p < 80]),
}, {
"category": "80-100%",
"count": len([p for p in progressList if 80 <= p <= 100]),
}]
return distribution
@@ -14,6 +14,7 @@
"member",
"member_name",
"member_username",
"member_image",
"certification_section",
"purchased_certificate",
"certificate",
@@ -143,13 +144,19 @@
"fieldtype": "Link",
"label": "Certificate",
"options": "LMS Certificate"
},
{
"fetch_from": "member.user_image",
"fieldname": "member_image",
"fieldtype": "Attach Image",
"label": "Member Image"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-04-25 10:06:25.824119",
"modified_by": "sayali@frappe.io",
"modified": "2025-07-02 21:27:30.733482",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Enrollment",
"owner": "Administrator",