From 015f903d682ddb0bb5342fc3500c0b80b723724c Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Thu, 29 Jan 2026 21:42:20 +0530 Subject: [PATCH] fix: api permissions --- .../doctype/course_lesson/course_lesson.py | 5 - .../lms_certificate_request.py | 25 +--- .../doctype/lms_mentor_request/__init__.py | 0 .../lms_mentor_request/lms_mentor_request.js | 7 - .../lms_mentor_request.json | 87 ----------- .../lms_mentor_request/lms_mentor_request.py | 136 ------------------ .../test_lms_mentor_request.py | 9 -- 7 files changed, 1 insertion(+), 268 deletions(-) delete mode 100644 lms/lms/doctype/lms_mentor_request/__init__.py delete mode 100644 lms/lms/doctype/lms_mentor_request/lms_mentor_request.js delete mode 100644 lms/lms/doctype/lms_mentor_request/lms_mentor_request.json delete mode 100644 lms/lms/doctype/lms_mentor_request/lms_mentor_request.py delete mode 100644 lms/lms/doctype/lms_mentor_request/test_lms_mentor_request.py diff --git a/lms/lms/doctype/course_lesson/course_lesson.py b/lms/lms/doctype/course_lesson/course_lesson.py index e077ba5b..28105002 100644 --- a/lms/lms/doctype/course_lesson/course_lesson.py +++ b/lms/lms/doctype/course_lesson/course_lesson.py @@ -182,8 +182,3 @@ def get_assignment_progress(lesson): ): return False return True - - -@frappe.whitelist() -def get_lesson_info(chapter): - return frappe.db.get_value("Course Chapter", chapter, "course") diff --git a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py index e748bb1b..33a781ce 100644 --- a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py +++ b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py @@ -231,32 +231,9 @@ def update_meeting_details(eval, event, calendar): frappe.db.set_value("LMS Certificate Request", eval.name, "google_meet_link", event.google_meet_link) -@frappe.whitelist() -def create_certificate_request(course, date, day, start_time, end_time, batch_name=None): - is_member = frappe.db.exists( - {"doctype": "LMS Enrollment", "course": course, "member": frappe.session.user} - ) - - if not is_member: - return - eval = frappe.new_doc("LMS Certificate Request") - eval.update( - { - "course": course, - "evaluator": get_evaluator(course, batch_name), - "member": frappe.session.user, - "date": date, - "day": day, - "start_time": start_time, - "end_time": end_time, - "batch_name": batch_name, - } - ) - eval.save(ignore_permissions=True) - - @frappe.whitelist() def create_lms_certificate_evaluation(source_name, target_doc=None): + frappe.only_for(["Moderator", "Batch Evaluator", "System Manager"]) doc = get_mapped_doc( "LMS Certificate Request", source_name, diff --git a/lms/lms/doctype/lms_mentor_request/__init__.py b/lms/lms/doctype/lms_mentor_request/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/lms/lms/doctype/lms_mentor_request/lms_mentor_request.js b/lms/lms/doctype/lms_mentor_request/lms_mentor_request.js deleted file mode 100644 index 4621b8f7..00000000 --- a/lms/lms/doctype/lms_mentor_request/lms_mentor_request.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) 2021, FOSS United and contributors -// For license information, please see license.txt - -frappe.ui.form.on("LMS Mentor Request", { - // refresh: function(frm) { - // } -}); diff --git a/lms/lms/doctype/lms_mentor_request/lms_mentor_request.json b/lms/lms/doctype/lms_mentor_request/lms_mentor_request.json deleted file mode 100644 index 1f045beb..00000000 --- a/lms/lms/doctype/lms_mentor_request/lms_mentor_request.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "actions": [], - "creation": "2021-04-18 11:48:02.635688", - "doctype": "DocType", - "editable_grid": 1, - "engine": "InnoDB", - "field_order": [ - "member", - "course", - "reviewed_by", - "column_break_3", - "member_name", - "status", - "comments" - ], - "fields": [ - { - "fieldname": "member", - "fieldtype": "Link", - "in_standard_filter": 1, - "label": "Member", - "options": "User" - }, - { - "fieldname": "course", - "fieldtype": "Link", - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Course", - "options": "LMS Course" - }, - { - "fieldname": "column_break_3", - "fieldtype": "Column Break" - }, - { - "fetch_from": "member.full_name", - "fieldname": "member_name", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Member Name" - }, - { - "fieldname": "status", - "fieldtype": "Select", - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Status", - "options": "Pending\nApproved\nRejected\nWithdrawn" - }, - { - "fieldname": "reviewed_by", - "fieldtype": "Link", - "label": "Reviewed By", - "options": "User" - }, - { - "fieldname": "comments", - "fieldtype": "Small Text", - "label": "Comments" - } - ], - "index_web_pages_for_search": 1, - "links": [], - "modified": "2021-05-21 11:49:12.543502", - "modified_by": "Administrator", - "module": "LMS", - "name": "LMS Mentor Request", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "share": 1, - "write": 1 - } - ], - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 1 -} \ No newline at end of file diff --git a/lms/lms/doctype/lms_mentor_request/lms_mentor_request.py b/lms/lms/doctype/lms_mentor_request/lms_mentor_request.py deleted file mode 100644 index 40b5ea44..00000000 --- a/lms/lms/doctype/lms_mentor_request/lms_mentor_request.py +++ /dev/null @@ -1,136 +0,0 @@ -# Copyright (c) 2021, FOSS United and contributors -# For license information, please see license.txt - -import frappe -from frappe import _ -from frappe.model.document import Document - - -class LMSMentorRequest(Document): - def on_update(self): - if self.has_value_changed("status"): - if self.status == "Approved": - self.create_course_mentor_mapping() - - if self.status != "Pending": - self.send_status_change_email() - - def create_course_mentor_mapping(self): - mapping = frappe.get_doc( - { - "doctype": "LMS Course Mentor Mapping", - "mentor": self.member, - "course": self.course, - } - ) - mapping.save() - - def send_creation_email(self): - email_template = self.get_email_template("mentor_request_creation") - if not email_template: - return - - course_details = frappe.db.get_value( - "LMS Course", self.course, ["owner", "slug", "title"], as_dict=True - ) - message = frappe.render_template( - email_template.response, - { - "member_name": frappe.db.get_value("User", frappe.session.user, "full_name"), - "course_url": "/lms/courses/" + course_details.slug, - "course": course_details.title, - }, - ) - - email_args = { - "recipients": [frappe.session.user, course_details.owner], - "subject": email_template.subject, - "header": email_template.subject, - "message": message, - } - frappe.enqueue(method=frappe.sendmail, queue="short", timeout=300, is_async=True, **email_args) - - def send_status_change_email(self): - email_template = self.get_email_template("mentor_request_status_update") - if not email_template: - return - - course_details = frappe.db.get_value("LMS Course", self.course, ["owner", "title"], as_dict=True) - message = frappe.render_template( - email_template.response, - { - "member_name": self.member_name, - "status": self.status, - "course": course_details.title, - }, - ) - - if self.status == "Approved" or self.status == "Rejected": - email_args = { - "recipients": self.member, - "cc": [course_details.owner, self.reviewed_by], - "subject": email_template.subject, - "header": email_template.subject, - "message": message, - } - frappe.enqueue(method=frappe.sendmail, queue="short", timeout=300, is_async=True, **email_args) - - elif self.status == "Withdrawn": - email_args = { - "recipients": [self.member, course_details.owner], - "subject": email_template.subject, - "header": email_template.subject, - "message": message, - } - frappe.enqueue(method=frappe.sendmail, queue="short", timeout=300, is_async=True, **email_args) - - def get_email_template(self, template_name): - template = frappe.db.get_single_value("LMS Settings", template_name) - if template: - return frappe.get_doc("Email Template", template) - - -@frappe.whitelist() -def has_requested(course): - return frappe.db.count( - "LMS Mentor Request", - filters={ - "member": frappe.session.user, - "course": course, - "status": ["in", ("Pending", "Approved")], - }, - ) - - -@frappe.whitelist() -def create_request(course): - if not has_requested(course): - request = frappe.get_doc( - { - "doctype": "LMS Mentor Request", - "member": frappe.session.user, - "course": course, - "status": "Pending", - } - ) - request.save(ignore_permissions=True) - request.send_creation_email() - return "OK" - - else: - return "Already Applied" - - -@frappe.whitelist() -def cancel_request(course): - request = frappe.get_doc( - "LMS Mentor Request", - { - "member": frappe.session.user, - "course": course, - "status": ["in", ("Pending", "Approved")], - }, - ) - request.status = "Withdrawn" - request.save(ignore_permissions=True) - return "OK" diff --git a/lms/lms/doctype/lms_mentor_request/test_lms_mentor_request.py b/lms/lms/doctype/lms_mentor_request/test_lms_mentor_request.py deleted file mode 100644 index acf8a390..00000000 --- a/lms/lms/doctype/lms_mentor_request/test_lms_mentor_request.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2021, FOSS United and Contributors -# See license.txt - -# import frappe -import unittest - - -class TestLMSMentorRequest(unittest.TestCase): - pass