fix: get progress from membership

This commit is contained in:
Jannat Patel
2021-10-20 12:05:13 +05:30
parent 4d534db63f
commit 66e8ac9cae
10 changed files with 58 additions and 29 deletions

View File

@@ -65,11 +65,12 @@ class CourseLesson(Document):
@frappe.whitelist()
def save_progress(lesson, course, status):
if not frappe.db.exists("LMS Batch Membership",
{
"member": frappe.session.user,
"course": course
}):
membership = frappe.db.exists("LMS Batch Membership",
{
"member": frappe.session.user,
"course": course
})
if not membership:
return
if frappe.db.exists("LMS Course Progress",
@@ -92,5 +93,8 @@ def save_progress(lesson, course, status):
"lesson": lesson,
"status": status,
}).save(ignore_permissions=True)
course_details = frappe.get_doc("LMS Course", course)
return course_details.get_course_progress()
progress = course_details.get_course_progress()
frappe.db.set_value("LMS Batch Memebership", membership, "progress", progress)
return progress

View File

@@ -5,15 +5,16 @@
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"batch",
"course",
"member",
"member_name",
"member_username",
"column_break_3",
"course",
"batch",
"member_type",
"role",
"current_lesson"
"progress",
"current_lesson",
"role"
],
"fields": [
{
@@ -80,11 +81,18 @@
"fieldtype": "Data",
"label": "Memeber Username",
"read_only": 1
},
{
"fieldname": "progress",
"fieldtype": "Data",
"label": "Progress",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-09-29 15:27:58.765399",
"migration_hash": "10fbeeba76887ba1dc94e7ac19ea637d",
"modified": "2021-10-20 10:08:04.071690",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Batch Membership",

View File

@@ -251,7 +251,7 @@ class LMSCourse(Document):
membership = frappe.db.get_value("LMS Batch Membership",
filters,
["name", "batch", "current_lesson", "member_type"],
["name", "batch", "current_lesson", "member_type", "progress"],
as_dict=True)
if membership and membership.batch:

View File

@@ -2,7 +2,7 @@
# License: MIT. See LICENSE
import frappe
from frappe.utils import rounded
from frappe.utils import cint
from frappe import _
def execute(filters=None):
@@ -23,21 +23,16 @@ def get_data(filters=None):
memberships = frappe.get_all(
"LMS Batch Membership",
query_filter,
["name", "course", "member", "member_name"],
["name", "course", "member", "member_name", "progress"],
order_by="course")
current_course = memberships[0].course
for membership in memberships:
if current_course != membership.course:
current_course = membership.course
course_details = frappe.get_doc("LMS Course", current_course)
summary.append(frappe._dict({
"course": course_details.name,
"course_name": course_details.title,
"course": membership.name,
"course_name": frappe.db.get_value("LMS Course", membership.course, "title"),
"member": membership.member,
"member_name": membership.member_name,
"progress": rounded(course_details.get_course_progress(membership.member))
"progress": cint(membership.progress)
}))
return summary

View File

@@ -1,5 +1,5 @@
{% set membership = course.get_membership(frappe.session.user) %}
{% set progress = course.get_course_progress() %}
{% set progress = membership.progress %}
<div class="common-card-style course-card">
<div class="course-image {% if not course.image %}default-image{% endif %}"

View File

@@ -109,7 +109,7 @@ class CustomUser(User):
if member_type:
filters["member_type"] = member_type
return frappe.get_all("LMS Batch Membership", filters, ["name", "course"])
return frappe.get_all("LMS Batch Membership", filters, ["name", "course", "progress"])
def get_mentored_courses(self):
""" Returns all courses mentored by this user """
@@ -130,10 +130,9 @@ class CustomUser(User):
def get_enrolled_courses(self):
in_progress = []
completed = []
memberships = self.get_course_membership("Student");
memberships = self.get_course_membership("Student")
for membership in memberships:
course = frappe.get_doc("LMS Course", membership.course)
progress = course.get_course_progress(member=self.name)
progress = cint(membership.progress)
if progress < 100:
in_progress.append(course)
else:

View File

@@ -18,3 +18,4 @@ execute:frappe.delete_doc("DocType", "Lessons") #06-10-2021
execute:frappe.delete_doc("DocType", "Chapter") #06-10-2021
execute:frappe.delete_doc("DocType", "Lesson") #06-10-2021
execute:frappe.delete_doc("DocType", "LMS Topic") #06-10-2021
community.patches.v0_0.add_progress_to_membership #20-10-2021

View File

@@ -0,0 +1,22 @@
import frappe
from frappe.utils import rounded
def execute():
frappe.reload_doc("lms", "doctype", "lms_batch_membership")
memberships = frappe.get_all(
"LMS Batch Membership",
["name", "course", "member"],
order_by="course")
if len(memberships):
current_course = memberships[0].course
for membership in memberships:
if current_course != membership.course:
current_course = membership.course
course_details = frappe.get_doc("LMS Course", current_course)
progress = rounded(course_details.get_course_progress(membership.member))
frappe.db.set_value("LMS Batch Membership", membership.name, "progress", progress)
frappe.db.delete("Prepared Report", {"ref_report_doctype": "Course Progress Summary"})
frappe.db.set_value("Report", "Course Progress Summary", "prepared_report", 0)

View File

@@ -99,7 +99,7 @@
<img class="ml-2" src="/assets/community/icons/side-arrow-white.svg">
</a>
{% elif course.enable_certification %}
<div class="button is-primary {% if course.get_course_progress() != 100 %} hide {% endif %}" id="certification">
<div class="button is-primary {% if membership.progress != 100 %} hide {% endif %}" id="certification">
Get Certificate
</div>
{% endif %}

View File

@@ -111,7 +111,7 @@
</div>
{{ widgets.MemberCard(member=course.get_instructor(), show_course_count=True, dimension_class="member-card-large") }}
</div>
{% set progress = course.get_course_progress() %}
{% set progress = membership.progress %}
{% if progress %}
<div class="course-progress-section">
<div class="course-home-headings">