fix: enrollment in restricted courses by admin

This commit is contained in:
Jannat Patel
2025-12-18 14:59:37 +05:30
parent dc724831c3
commit 46d13d65c1
2 changed files with 17 additions and 32 deletions

View File

@@ -220,8 +220,12 @@ function enrollStudent() {
window.location.href = `/login?redirect-to=${window.location.pathname}` window.location.href = `/login?redirect-to=${window.location.pathname}`
}, 500) }, 500)
} else { } else {
call('lms.lms.doctype.lms_enrollment.lms_enrollment.create_membership', { call('frappe.client.insert', {
course: props.course.data.name, doc: {
doctype: 'LMS Enrollment',
course: props.course.data.name,
member: user.data.name,
},
}) })
.then(() => { .then(() => {
capture('enrolled_in_course', { capture('enrolled_in_course', {

View File

@@ -8,7 +8,7 @@ from frappe.utils import ceil
class LMSEnrollment(Document): class LMSEnrollment(Document):
def validate(self): def before_insert(self):
self.validate_course_enrollment_eligibility() self.validate_course_enrollment_eligibility()
def on_update(self): def on_update(self):
@@ -22,7 +22,7 @@ class LMSEnrollment(Document):
as_dict=True, as_dict=True,
) )
if course_details.disable_self_learning: if course_details.disable_self_learning and not is_admin():
frappe.throw( frappe.throw(
_( _(
"You cannot enroll in this course as self-learning is disabled. Please contact the Administrator." "You cannot enroll in this course as self-learning is disabled. Please contact the Administrator."
@@ -47,6 +47,15 @@ class LMSEnrollment(Document):
frappe.throw(_("You need to complete the payment for this course before enrolling.")) frappe.throw(_("You need to complete the payment for this course before enrolling."))
def is_admin():
roles = frappe.get_roles(frappe.session.user)
admin_roles = ["Moderator", "Course Creator", "Batch Evaluator"]
for role in admin_roles:
if role in roles:
return True
return False
def update_program_progress(member): def update_program_progress(member):
programs = frappe.get_all("LMS Program Member", {"member": member}, ["parent", "name"]) programs = frappe.get_all("LMS Program Member", {"member": member}, ["parent", "name"])
@@ -60,31 +69,3 @@ def update_program_progress(member):
average_progress = ceil(total_progress / len(courses)) average_progress = ceil(total_progress / len(courses))
frappe.db.set_value("LMS Program Member", program.name, "progress", average_progress) frappe.db.set_value("LMS Program Member", program.name, "progress", average_progress)
@frappe.whitelist()
def create_membership(course, batch=None, member=None, member_type="Student", role="Member"):
enrollment = frappe.new_doc("LMS Enrollment")
enrollment.update(
{
"doctype": "LMS Enrollment",
"batch_old": batch,
"course": course,
"role": role,
"member_type": member_type,
"member": member or frappe.session.user,
}
)
enrollment.insert()
return enrollment
@frappe.whitelist()
def update_current_membership(batch, course, member):
all_memberships = frappe.get_all("LMS Enrollment", {"member": member, "course": course})
for membership in all_memberships:
frappe.db.set_value("LMS Enrollment", membership.name, "is_current", 0)
current_membership = frappe.get_all("LMS Enrollment", {"batch_old": batch, "member": member})
if len(current_membership):
frappe.db.set_value("LMS Enrollment", current_membership[0].name, "is_current", 1)