From 1f4c7fcb0f4b3be8c861a74655afdb2c328b8f83 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Thu, 3 Nov 2022 10:59:39 +0530 Subject: [PATCH] fix: course permission messages --- lms/hooks.py | 3 ++- lms/lms/utils.py | 8 ++++++++ lms/www/courses/course.py | 13 +++++++++---- lms/www/courses/index.py | 6 ++---- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lms/hooks.py b/lms/hooks.py index c6e34284..8e278561 100644 --- a/lms/hooks.py +++ b/lms/hooks.py @@ -205,7 +205,8 @@ jinja = { "lms.lms.utils.get_lesson_count", "lms.lms.utils.get_all_memberships", "lms.lms.utils.get_filtered_membership", - "lms.lms.utils.show_start_learing_cta" + "lms.lms.utils.show_start_learing_cta", + "lms.lms.utils.can_create_courses" ], "filters": [] } diff --git a/lms/lms/utils.py b/lms/lms/utils.py index 127ad33d..85573597 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -466,6 +466,14 @@ def has_course_instructor_role(member=None): }, "name") +def can_create_courses(member=None): + if not member: + member = frappe.session.user + + portal_course_creation = frappe.db.get_single_value("LMS Settings", "portal_course_creation") + return frappe.session.user != "Guest" and (portal_course_creation == "Anyone" or has_course_instructor_role(member)) + + def has_course_moderator_role(member=None): return frappe.db.get_value("Has Role", { "parent": member or frappe.session.user, diff --git a/lms/www/courses/course.py b/lms/www/courses/course.py index b02dbba1..180f74c1 100644 --- a/lms/www/courses/course.py +++ b/lms/www/courses/course.py @@ -1,6 +1,6 @@ import frappe -from lms.lms.utils import get_membership, has_course_moderator_role, is_instructor, is_certified, get_evaluation_details, redirect_to_courses_list - +from lms.lms.utils import can_create_courses, get_membership, has_course_moderator_role, is_instructor, is_certified, get_evaluation_details, redirect_to_courses_list +from frappe import _ def get_context(context): context.no_cache = 1 @@ -11,8 +11,13 @@ def get_context(context): redirect_to_courses_list() if course_name == "new-course": - if frappe.session.user == "Guest": - redirect_to_courses_list() + if not can_create_courses(): + message = "You do not have permission to access this page." + if frappe.session.user == "Guest": + message = "Please login to access this page." + + raise frappe.PermissionError(_(message)) + context.course = frappe._dict() context.course.edit_mode = True context.membership = None diff --git a/lms/www/courses/index.py b/lms/www/courses/index.py index f7797091..63002365 100644 --- a/lms/www/courses/index.py +++ b/lms/www/courses/index.py @@ -1,15 +1,13 @@ import frappe from frappe import _ -from lms.lms.utils import has_course_instructor_role, has_course_moderator_role, check_profile_restriction, get_restriction_details +from lms.lms.utils import can_create_courses, has_course_moderator_role, check_profile_restriction, get_restriction_details def get_context(context): context.no_cache = 1 context.live_courses, context.upcoming_courses = get_courses() context.restriction = check_profile_restriction() - portal_course_creation = frappe.db.get_single_value("LMS Settings", "portal_course_creation") - context.show_creators_section = frappe.session.user != "Guest" and \ - (portal_course_creation == "Anyone" or has_course_instructor_role()) + context.show_creators_section = can_create_courses() context.show_review_section = has_course_moderator_role() and frappe.session.user != "Guest" if context.restriction: