feat: send email to batch students
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from lms.lms.utils import can_create_courses
|
from lms.lms.utils import has_course_moderator_role, has_course_instructor_role
|
||||||
|
|
||||||
|
|
||||||
class LMSAssignment(Document):
|
class LMSAssignment(Document):
|
||||||
@@ -12,7 +12,7 @@ class LMSAssignment(Document):
|
|||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def save_assignment(assignment, title, type, question):
|
def save_assignment(assignment, title, type, question):
|
||||||
if not can_create_courses():
|
if not has_course_moderator_role() or not has_course_instructor_role():
|
||||||
return
|
return
|
||||||
|
|
||||||
if assignment:
|
if assignment:
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ def save_course(
|
|||||||
course_price=None,
|
course_price=None,
|
||||||
currency=None,
|
currency=None,
|
||||||
):
|
):
|
||||||
if not can_create_courses():
|
if not can_create_courses(course):
|
||||||
return
|
return
|
||||||
|
|
||||||
if course:
|
if course:
|
||||||
|
|||||||
@@ -6,7 +6,11 @@ import frappe
|
|||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.utils import cstr
|
from frappe.utils import cstr
|
||||||
from lms.lms.utils import generate_slug, has_course_moderator_role, can_create_courses
|
from lms.lms.utils import (
|
||||||
|
generate_slug,
|
||||||
|
has_course_moderator_role,
|
||||||
|
has_course_instructor_role,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LMSQuiz(Document):
|
class LMSQuiz(Document):
|
||||||
@@ -148,7 +152,7 @@ def quiz_summary(quiz, results):
|
|||||||
def save_quiz(
|
def save_quiz(
|
||||||
quiz_title, max_attempts=1, quiz=None, show_answers=1, show_submission_history=0
|
quiz_title, max_attempts=1, quiz=None, show_answers=1, show_submission_history=0
|
||||||
):
|
):
|
||||||
if not can_create_courses():
|
if not has_course_moderator_role() or not has_course_instructor_role():
|
||||||
return
|
return
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
|
|||||||
@@ -521,21 +521,35 @@ def has_course_instructor_role(member=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def can_create_courses(member=None):
|
def can_create_courses(course, member=None):
|
||||||
if not member:
|
if not member:
|
||||||
member = frappe.session.user
|
member = frappe.session.user
|
||||||
|
|
||||||
|
instructors = frappe.get_all(
|
||||||
|
"Course Instructor",
|
||||||
|
{
|
||||||
|
"parent": course,
|
||||||
|
},
|
||||||
|
pluck="instructor",
|
||||||
|
)
|
||||||
|
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if has_course_instructor_role(member) or has_course_moderator_role(member):
|
if has_course_moderator_role(member):
|
||||||
|
return True
|
||||||
|
|
||||||
|
if has_course_instructor_role(member) and member in instructors:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
portal_course_creation = frappe.db.get_single_value(
|
portal_course_creation = frappe.db.get_single_value(
|
||||||
"LMS Settings", "portal_course_creation"
|
"LMS Settings", "portal_course_creation"
|
||||||
)
|
)
|
||||||
|
|
||||||
return portal_course_creation == "Anyone"
|
if portal_course_creation == "Anyone" and member in instructors:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def has_course_moderator_role(member=None):
|
def has_course_moderator_role(member=None):
|
||||||
@@ -727,7 +741,7 @@ def get_chart_data(chart_name, timespan, timegrain, from_date, to_date):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist(allow_guest=True)
|
||||||
def get_course_completion_data():
|
def get_course_completion_data():
|
||||||
all_membership = frappe.db.count("LMS Enrollment")
|
all_membership = frappe.db.count("LMS Enrollment")
|
||||||
completed = frappe.db.count("LMS Enrollment", {"progress": ["like", "%100%"]})
|
completed = frappe.db.count("LMS Enrollment", {"progress": ["like", "%100%"]})
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from lms.lms.utils import can_create_courses
|
from lms.lms.utils import has_course_moderator_role, has_course_instructor_role
|
||||||
|
|
||||||
|
|
||||||
def get_context(context):
|
def get_context(context):
|
||||||
context.no_cache = 1
|
context.no_cache = 1
|
||||||
|
|
||||||
if not can_create_courses():
|
if not has_course_moderator_role() or not has_course_instructor_role():
|
||||||
message = "You do not have permission to access this page."
|
message = "You do not have permission to access this page."
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
message = "Please login to access this page."
|
message = "Please login to access this page."
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe.utils import cstr
|
from frappe.utils import cstr
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from lms.lms.utils import can_create_courses
|
from lms.lms.utils import has_course_instructor_role, has_course_moderator_role
|
||||||
|
|
||||||
|
|
||||||
def get_context(context):
|
def get_context(context):
|
||||||
context.no_cache = 1
|
context.no_cache = 1
|
||||||
|
|
||||||
if not can_create_courses():
|
if not has_course_moderator_role() or not has_course_instructor_role():
|
||||||
message = "You do not have permission to access this page."
|
message = "You do not have permission to access this page."
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
message = "Please login to access this page."
|
message = "Please login to access this page."
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from lms.lms.utils import can_create_courses, has_course_moderator_role
|
from lms.lms.utils import has_course_instructor_role, has_course_moderator_role
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
|
||||||
|
|
||||||
def get_context(context):
|
def get_context(context):
|
||||||
context.no_cache = 1
|
context.no_cache = 1
|
||||||
|
|
||||||
if not can_create_courses():
|
if not has_course_moderator_role() or not has_course_instructor_role():
|
||||||
message = "You do not have permission to access this page."
|
message = "You do not have permission to access this page."
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
message = "Please login to access this page."
|
message = "Please login to access this page."
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ def get_context(context):
|
|||||||
redirect_to_courses_list()
|
redirect_to_courses_list()
|
||||||
|
|
||||||
if course_name == "new-course":
|
if course_name == "new-course":
|
||||||
if not can_create_courses():
|
if not can_create_courses(course_name):
|
||||||
message = "You do not have permission to access this page."
|
message = "You do not have permission to access this page."
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
message = "Please login to access this page."
|
message = "Please login to access this page."
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ def get_context(context):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
redirect_to_courses_list()
|
redirect_to_courses_list()
|
||||||
|
|
||||||
if not can_create_courses():
|
if not can_create_courses(course_name):
|
||||||
message = "You do not have permission to access this page."
|
message = "You do not have permission to access this page."
|
||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
message = "Please login to access this page."
|
message = "Please login to access this page."
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from lms.lms.utils import (
|
from lms.lms.utils import (
|
||||||
can_create_courses,
|
|
||||||
check_profile_restriction,
|
check_profile_restriction,
|
||||||
get_restriction_details,
|
get_restriction_details,
|
||||||
has_course_moderator_role,
|
has_course_moderator_role,
|
||||||
@@ -21,7 +20,11 @@ def get_context(context):
|
|||||||
context.created_courses = get_authored_courses(None, False)
|
context.created_courses = get_authored_courses(None, False)
|
||||||
context.review_courses = get_courses_under_review()
|
context.review_courses = get_courses_under_review()
|
||||||
context.restriction = check_profile_restriction()
|
context.restriction = check_profile_restriction()
|
||||||
context.show_creators_section = can_create_courses()
|
|
||||||
|
portal_course_creation = frappe.db.get_single_value(
|
||||||
|
"LMS Settings", "portal_course_creation"
|
||||||
|
)
|
||||||
|
context.show_creators_section = True if portal_course_creation == "Anyone" else False
|
||||||
context.show_review_section = (
|
context.show_review_section = (
|
||||||
has_course_moderator_role() and frappe.session.user != "Guest"
|
has_course_moderator_role() and frappe.session.user != "Guest"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user