mirror of
https://github.com/frappe/lms.git
synced 2026-05-02 13:39:31 +03:00
fix: api permissions
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
// }
|
||||
});
|
||||
@@ -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
|
||||
}
|
||||
@@ -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"
|
||||
@@ -1,9 +0,0 @@
|
||||
# Copyright (c) 2021, FOSS United and Contributors
|
||||
# See license.txt
|
||||
|
||||
# import frappe
|
||||
import unittest
|
||||
|
||||
|
||||
class TestLMSMentorRequest(unittest.TestCase):
|
||||
pass
|
||||
Reference in New Issue
Block a user