refactor: program list for students
This commit is contained in:
@@ -93,7 +93,7 @@
|
||||
"grid_page_length": 50,
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2025-08-13 14:36:59.168945",
|
||||
"modified": "2025-08-18 13:08:04.993241",
|
||||
"modified_by": "sayali@frappe.io",
|
||||
"module": "LMS",
|
||||
"name": "LMS Program",
|
||||
@@ -135,6 +135,15 @@
|
||||
"role": "Course Creator",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "LMS Student",
|
||||
"share": 1
|
||||
}
|
||||
],
|
||||
"row_format": "Dynamic",
|
||||
|
||||
@@ -10,6 +10,7 @@ class LMSProgram(Document):
|
||||
def validate(self):
|
||||
self.validate_program_courses()
|
||||
self.validate_program_members()
|
||||
self.update_count()
|
||||
|
||||
def validate_program_courses(self):
|
||||
courses = [row.course for row in self.program_courses]
|
||||
@@ -30,3 +31,13 @@ class LMSProgram(Document):
|
||||
frappe.bold(next(iter(duplicates)))
|
||||
)
|
||||
)
|
||||
|
||||
def update_count(self):
|
||||
course_count = len(self.program_courses)
|
||||
member_count = len(self.program_members)
|
||||
|
||||
if self.course_count != course_count:
|
||||
self.course_count = course_count
|
||||
|
||||
if self.member_count != member_count:
|
||||
self.member_count = member_count
|
||||
|
||||
+27
-6
@@ -1919,9 +1919,33 @@ def update_certificate_purchase(course, payment_name):
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_programs():
|
||||
if has_course_moderator_role() or has_course_instructor_role() or has_course_evaluator_role():
|
||||
programs = frappe.get_all("LMS Program", fields=["name"])
|
||||
enrolled_programs = frappe.get_all(
|
||||
"LMS Program Member", {"member": frappe.session.user}, ["parent as name", "progress"]
|
||||
)
|
||||
for program in enrolled_programs:
|
||||
program.update(
|
||||
frappe.db.get_value(
|
||||
"LMS Program", program.name, ["name", "course_count", "member_count"], as_dict=True
|
||||
)
|
||||
)
|
||||
|
||||
published_programs = frappe.get_all(
|
||||
"LMS Program",
|
||||
{
|
||||
"published": 1,
|
||||
"allow_self_enrollment": 1,
|
||||
},
|
||||
["name", "course_count", "member_count"],
|
||||
)
|
||||
published_programs = [program for program in published_programs if program not in enrolled_programs]
|
||||
|
||||
return {
|
||||
"enrolled": enrolled_programs,
|
||||
"published": published_programs,
|
||||
}
|
||||
|
||||
|
||||
""" def set_program_details(programs):
|
||||
for program in programs:
|
||||
program_courses = frappe.get_all(
|
||||
"LMS Program Course", {"parent": program.name}, ["course"], order_by="idx"
|
||||
@@ -1939,10 +1963,7 @@ def get_programs():
|
||||
|
||||
previous_progress = details.membership.progress if details.membership else 0
|
||||
program.courses.append(details)
|
||||
|
||||
program.members = frappe.db.count("LMS Program Member", {"parent": program.name})
|
||||
|
||||
return programs
|
||||
"""
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
|
||||
Reference in New Issue
Block a user