fix: get progress from membership
This commit is contained in:
@@ -65,11 +65,12 @@ class CourseLesson(Document):
|
|||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def save_progress(lesson, course, status):
|
def save_progress(lesson, course, status):
|
||||||
if not frappe.db.exists("LMS Batch Membership",
|
membership = frappe.db.exists("LMS Batch Membership",
|
||||||
{
|
{
|
||||||
"member": frappe.session.user,
|
"member": frappe.session.user,
|
||||||
"course": course
|
"course": course
|
||||||
}):
|
})
|
||||||
|
if not membership:
|
||||||
return
|
return
|
||||||
|
|
||||||
if frappe.db.exists("LMS Course Progress",
|
if frappe.db.exists("LMS Course Progress",
|
||||||
@@ -92,5 +93,8 @@ def save_progress(lesson, course, status):
|
|||||||
"lesson": lesson,
|
"lesson": lesson,
|
||||||
"status": status,
|
"status": status,
|
||||||
}).save(ignore_permissions=True)
|
}).save(ignore_permissions=True)
|
||||||
|
|
||||||
course_details = frappe.get_doc("LMS Course", course)
|
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
|
||||||
|
|||||||
@@ -5,15 +5,16 @@
|
|||||||
"editable_grid": 1,
|
"editable_grid": 1,
|
||||||
"engine": "InnoDB",
|
"engine": "InnoDB",
|
||||||
"field_order": [
|
"field_order": [
|
||||||
"batch",
|
"course",
|
||||||
"member",
|
"member",
|
||||||
"member_name",
|
"member_name",
|
||||||
"member_username",
|
"member_username",
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
"course",
|
"batch",
|
||||||
"member_type",
|
"member_type",
|
||||||
"role",
|
"progress",
|
||||||
"current_lesson"
|
"current_lesson",
|
||||||
|
"role"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
@@ -80,11 +81,18 @@
|
|||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Memeber Username",
|
"label": "Memeber Username",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "progress",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Progress",
|
||||||
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-09-29 15:27:58.765399",
|
"migration_hash": "10fbeeba76887ba1dc94e7ac19ea637d",
|
||||||
|
"modified": "2021-10-20 10:08:04.071690",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "LMS",
|
"module": "LMS",
|
||||||
"name": "LMS Batch Membership",
|
"name": "LMS Batch Membership",
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ class LMSCourse(Document):
|
|||||||
|
|
||||||
membership = frappe.db.get_value("LMS Batch Membership",
|
membership = frappe.db.get_value("LMS Batch Membership",
|
||||||
filters,
|
filters,
|
||||||
["name", "batch", "current_lesson", "member_type"],
|
["name", "batch", "current_lesson", "member_type", "progress"],
|
||||||
as_dict=True)
|
as_dict=True)
|
||||||
|
|
||||||
if membership and membership.batch:
|
if membership and membership.batch:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
# License: MIT. See LICENSE
|
# License: MIT. See LICENSE
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.utils import rounded
|
from frappe.utils import cint
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
@@ -23,21 +23,16 @@ def get_data(filters=None):
|
|||||||
memberships = frappe.get_all(
|
memberships = frappe.get_all(
|
||||||
"LMS Batch Membership",
|
"LMS Batch Membership",
|
||||||
query_filter,
|
query_filter,
|
||||||
["name", "course", "member", "member_name"],
|
["name", "course", "member", "member_name", "progress"],
|
||||||
order_by="course")
|
order_by="course")
|
||||||
|
|
||||||
current_course = memberships[0].course
|
|
||||||
for membership in memberships:
|
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({
|
summary.append(frappe._dict({
|
||||||
"course": course_details.name,
|
"course": membership.name,
|
||||||
"course_name": course_details.title,
|
"course_name": frappe.db.get_value("LMS Course", membership.course, "title"),
|
||||||
"member": membership.member,
|
"member": membership.member,
|
||||||
"member_name": membership.member_name,
|
"member_name": membership.member_name,
|
||||||
"progress": rounded(course_details.get_course_progress(membership.member))
|
"progress": cint(membership.progress)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
return summary
|
return summary
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{% set membership = course.get_membership(frappe.session.user) %}
|
{% 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="common-card-style course-card">
|
||||||
|
|
||||||
<div class="course-image {% if not course.image %}default-image{% endif %}"
|
<div class="course-image {% if not course.image %}default-image{% endif %}"
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ class CustomUser(User):
|
|||||||
if member_type:
|
if member_type:
|
||||||
filters["member_type"] = 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):
|
def get_mentored_courses(self):
|
||||||
""" Returns all courses mentored by this user """
|
""" Returns all courses mentored by this user """
|
||||||
@@ -130,10 +130,9 @@ class CustomUser(User):
|
|||||||
def get_enrolled_courses(self):
|
def get_enrolled_courses(self):
|
||||||
in_progress = []
|
in_progress = []
|
||||||
completed = []
|
completed = []
|
||||||
memberships = self.get_course_membership("Student");
|
memberships = self.get_course_membership("Student")
|
||||||
for membership in memberships:
|
for membership in memberships:
|
||||||
course = frappe.get_doc("LMS Course", membership.course)
|
progress = cint(membership.progress)
|
||||||
progress = course.get_course_progress(member=self.name)
|
|
||||||
if progress < 100:
|
if progress < 100:
|
||||||
in_progress.append(course)
|
in_progress.append(course)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -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", "Chapter") #06-10-2021
|
||||||
execute:frappe.delete_doc("DocType", "Lesson") #06-10-2021
|
execute:frappe.delete_doc("DocType", "Lesson") #06-10-2021
|
||||||
execute:frappe.delete_doc("DocType", "LMS Topic") #06-10-2021
|
execute:frappe.delete_doc("DocType", "LMS Topic") #06-10-2021
|
||||||
|
community.patches.v0_0.add_progress_to_membership #20-10-2021
|
||||||
|
|||||||
22
community/patches/v0_0/add_progress_to_membership.py
Normal file
22
community/patches/v0_0/add_progress_to_membership.py
Normal 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)
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
<img class="ml-2" src="/assets/community/icons/side-arrow-white.svg">
|
<img class="ml-2" src="/assets/community/icons/side-arrow-white.svg">
|
||||||
</a>
|
</a>
|
||||||
{% elif course.enable_certification %}
|
{% 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
|
Get Certificate
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ widgets.MemberCard(member=course.get_instructor(), show_course_count=True, dimension_class="member-card-large") }}
|
{{ widgets.MemberCard(member=course.get_instructor(), show_course_count=True, dimension_class="member-card-large") }}
|
||||||
</div>
|
</div>
|
||||||
{% set progress = course.get_course_progress() %}
|
{% set progress = membership.progress %}
|
||||||
{% if progress %}
|
{% if progress %}
|
||||||
<div class="course-progress-section">
|
<div class="course-progress-section">
|
||||||
<div class="course-home-headings">
|
<div class="course-home-headings">
|
||||||
|
|||||||
Reference in New Issue
Block a user