chore: Remove deprecated doctype and related links
This commit is contained in:
@@ -66,75 +66,6 @@ def save_current_lesson(course_name, lesson_name):
|
|||||||
frappe.db.set_value("LMS Enrollment", name, "current_lesson", lesson_name)
|
frappe.db.set_value("LMS Enrollment", name, "current_lesson", lesson_name)
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
|
||||||
def join_cohort(course, cohort, subgroup, invite_code):
|
|
||||||
"""Creates a Cohort Join Request for given user."""
|
|
||||||
course_doc = frappe.get_doc("LMS Course", course)
|
|
||||||
cohort_doc = course_doc and course_doc.get_cohort(cohort)
|
|
||||||
subgroup_doc = cohort_doc and cohort_doc.get_subgroup(subgroup)
|
|
||||||
|
|
||||||
if not subgroup_doc or subgroup_doc.invite_code != invite_code:
|
|
||||||
return {"ok": False, "error": "Invalid join link"}
|
|
||||||
|
|
||||||
data = {
|
|
||||||
"doctype": "Cohort Join Request",
|
|
||||||
"cohort": cohort_doc.name,
|
|
||||||
"subgroup": subgroup_doc.name,
|
|
||||||
"email": frappe.session.user,
|
|
||||||
"status": "Pending",
|
|
||||||
}
|
|
||||||
# Don't insert duplicate records
|
|
||||||
if frappe.db.exists(data):
|
|
||||||
return {"ok": True, "status": "record found"}
|
|
||||||
else:
|
|
||||||
doc = frappe.get_doc(data)
|
|
||||||
doc.insert()
|
|
||||||
return {"ok": True, "status": "record created"}
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
|
||||||
def approve_cohort_join_request(join_request):
|
|
||||||
r = frappe.get_doc("Cohort Join Request", join_request)
|
|
||||||
sg = r and frappe.get_doc("Cohort Subgroup", r.subgroup)
|
|
||||||
if not sg or r.status not in ["Pending", "Accepted"]:
|
|
||||||
return {"ok": False, "error": "Invalid Join Request"}
|
|
||||||
if not sg.is_manager(frappe.session.user) and "System Manager" not in frappe.get_roles():
|
|
||||||
return {"ok": False, "error": "Permission Deined"}
|
|
||||||
|
|
||||||
r.status = "Accepted"
|
|
||||||
r.save()
|
|
||||||
return {"ok": True}
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
|
||||||
def reject_cohort_join_request(join_request):
|
|
||||||
r = frappe.get_doc("Cohort Join Request", join_request)
|
|
||||||
sg = r and frappe.get_doc("Cohort Subgroup", r.subgroup)
|
|
||||||
if not sg or r.status not in ["Pending", "Rejected"]:
|
|
||||||
return {"ok": False, "error": "Invalid Join Request"}
|
|
||||||
if not sg.is_manager(frappe.session.user) and "System Manager" not in frappe.get_roles():
|
|
||||||
return {"ok": False, "error": "Permission Deined"}
|
|
||||||
|
|
||||||
r.status = "Rejected"
|
|
||||||
r.save()
|
|
||||||
return {"ok": True}
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
|
||||||
def undo_reject_cohort_join_request(join_request):
|
|
||||||
r = frappe.get_doc("Cohort Join Request", join_request)
|
|
||||||
sg = r and frappe.get_doc("Cohort Subgroup", r.subgroup)
|
|
||||||
# keeping Pending as well to consider the case of duplicate requests
|
|
||||||
if not sg or r.status not in ["Pending", "Rejected"]:
|
|
||||||
return {"ok": False, "error": "Invalid Join Request"}
|
|
||||||
if not sg.is_manager(frappe.session.user) and "System Manager" not in frappe.get_roles():
|
|
||||||
return {"ok": False, "error": "Permission Deined"}
|
|
||||||
|
|
||||||
r.status = "Pending"
|
|
||||||
r.save()
|
|
||||||
return {"ok": True}
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist(allow_guest=True)
|
@frappe.whitelist(allow_guest=True)
|
||||||
def get_user_info():
|
def get_user_info():
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
|
|||||||
@@ -19,9 +19,7 @@
|
|||||||
"comments",
|
"comments",
|
||||||
"latest_submission",
|
"latest_submission",
|
||||||
"member",
|
"member",
|
||||||
"member_email",
|
"member_email"
|
||||||
"member_cohort",
|
|
||||||
"member_subgroup"
|
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
@@ -121,27 +119,11 @@
|
|||||||
"label": "Member Email",
|
"label": "Member Email",
|
||||||
"options": "User",
|
"options": "User",
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
|
||||||
{
|
|
||||||
"fetch_from": "member.cohort",
|
|
||||||
"fieldname": "member_cohort",
|
|
||||||
"fieldtype": "Link",
|
|
||||||
"label": "Member Cohort",
|
|
||||||
"options": "Cohort",
|
|
||||||
"search_index": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fetch_from": "member.subgroup",
|
|
||||||
"fieldname": "member_subgroup",
|
|
||||||
"fieldtype": "Link",
|
|
||||||
"label": "Member Subgroup",
|
|
||||||
"options": "Cohort Subgroup",
|
|
||||||
"search_index": 1
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-12-08 22:58:46.312863",
|
"modified": "2025-12-14 20:56:52.370697",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "LMS",
|
"module": "LMS",
|
||||||
"name": "Exercise Latest Submission",
|
"name": "Exercise Latest Submission",
|
||||||
@@ -160,7 +142,9 @@
|
|||||||
"write": 1
|
"write": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"row_format": "Dynamic",
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
|
"states": [],
|
||||||
"track_changes": 1
|
"track_changes": 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,18 +179,6 @@ class LMSCourse(Document):
|
|||||||
batch_names = {m.batch_old for m in memberships}
|
batch_names = {m.batch_old for m in memberships}
|
||||||
return [b for b in batches if b.name in batch_names]
|
return [b for b in batches if b.name in batch_names]
|
||||||
|
|
||||||
def get_cohorts(self):
|
|
||||||
return frappe.get_all(
|
|
||||||
"Cohort",
|
|
||||||
{"course": self.name},
|
|
||||||
["name", "slug", "title", "begin_date", "end_date"],
|
|
||||||
order_by="creation",
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_cohort(self, cohort_slug):
|
|
||||||
name = frappe.get_value("Cohort", {"course": self.name, "slug": cohort_slug})
|
|
||||||
return name and frappe.get_doc("Cohort", name)
|
|
||||||
|
|
||||||
def reindex_exercises(self):
|
def reindex_exercises(self):
|
||||||
for i, c in enumerate(get_chapters(self.name), start=1):
|
for i, c in enumerate(get_chapters(self.name), start=1):
|
||||||
self._reindex_exercises_in_chapter(c, i)
|
self._reindex_exercises_in_chapter(c, i)
|
||||||
|
|||||||
@@ -19,8 +19,6 @@
|
|||||||
"purchased_certificate",
|
"purchased_certificate",
|
||||||
"certificate",
|
"certificate",
|
||||||
"section_break_8",
|
"section_break_8",
|
||||||
"cohort",
|
|
||||||
"subgroup",
|
|
||||||
"batch_old",
|
"batch_old",
|
||||||
"column_break_12",
|
"column_break_12",
|
||||||
"member_type",
|
"member_type",
|
||||||
@@ -101,18 +99,6 @@
|
|||||||
"label": "Progress",
|
"label": "Progress",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"fieldname": "cohort",
|
|
||||||
"fieldtype": "Link",
|
|
||||||
"label": "Cohort",
|
|
||||||
"options": "Cohort"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fieldname": "subgroup",
|
|
||||||
"fieldtype": "Link",
|
|
||||||
"label": "Subgroup",
|
|
||||||
"options": "Cohort Subgroup"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"fieldname": "column_break_12",
|
"fieldname": "column_break_12",
|
||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
@@ -155,7 +141,7 @@
|
|||||||
"grid_page_length": 50,
|
"grid_page_length": 50,
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2025-07-02 21:27:30.733482",
|
"modified": "2025-12-14 20:59:37.166118",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "LMS",
|
"module": "LMS",
|
||||||
"name": "LMS Enrollment",
|
"name": "LMS Enrollment",
|
||||||
|
|||||||
@@ -356,13 +356,6 @@ def is_mentor(course, email):
|
|||||||
return frappe.db.count("LMS Course Mentor Mapping", {"course": course, "mentor": email})
|
return frappe.db.count("LMS Course Mentor Mapping", {"course": course, "mentor": email})
|
||||||
|
|
||||||
|
|
||||||
def is_cohort_staff(course, user_email):
|
|
||||||
"""Returns True if the user is either a mentor or a staff for one or more active cohorts of this course."""
|
|
||||||
staff = {"doctype": "Cohort Staff", "course": course, "email": user_email}
|
|
||||||
mentor = {"doctype": "Cohort Mentor", "course": course, "email": user_email}
|
|
||||||
return frappe.db.exists(staff) or frappe.db.exists(mentor)
|
|
||||||
|
|
||||||
|
|
||||||
def get_mentors(course):
|
def get_mentors(course):
|
||||||
"""Returns the list of all mentors for this course."""
|
"""Returns the list of all mentors for this course."""
|
||||||
course_mentors = []
|
course_mentors = []
|
||||||
|
|||||||
Reference in New Issue
Block a user