diff --git a/frontend/src/pages/Profile.vue b/frontend/src/pages/Profile.vue
index f5ad9448..e21277c3 100644
--- a/frontend/src/pages/Profile.vue
+++ b/frontend/src/pages/Profile.vue
@@ -116,7 +116,7 @@ const profile = createResource({
const setActiveTab = () => {
let fragments = route.path.split('/')
- let sections = ['certificates', 'settings']
+ let sections = ['certificates', 'settings', 'evaluator']
sections.forEach((section) => {
if (fragments.includes(section)) {
activeTab.value = convertToTitleCase(section)
@@ -131,6 +131,7 @@ watchEffect(() => {
About: { name: 'ProfileAbout' },
Certificates: { name: 'ProfileCertificates' },
Settings: { name: 'ProfileSettings' },
+ Evaluato: { name: 'ProfileEvaluator' },
}[activeTab.value]
router.push(route)
}
@@ -147,6 +148,8 @@ const isSessionUser = () => {
const getTabButtons = () => {
let buttons = [{ label: 'About' }, { label: 'Certificates' }]
if ($user.data?.is_moderator) buttons.push({ label: 'Settings' })
+ if (isSessionUser() && $user.data?.is_evaluator)
+ buttons.push({ label: 'Evaluation Slots' })
return buttons
}
diff --git a/frontend/src/pages/ProfileEvaluator.vue b/frontend/src/pages/ProfileEvaluator.vue
new file mode 100644
index 00000000..aff82f9f
--- /dev/null
+++ b/frontend/src/pages/ProfileEvaluator.vue
@@ -0,0 +1,2 @@
+Evaluator
+
diff --git a/frontend/src/pages/ProfileSettings.vue b/frontend/src/pages/ProfileSettings.vue
index cc340bc4..46a17783 100644
--- a/frontend/src/pages/ProfileSettings.vue
+++ b/frontend/src/pages/ProfileSettings.vue
@@ -1 +1,96 @@
-
+
+
+
+ {{ __('Settings') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/router.js b/frontend/src/router.js
index 6aea1b47..0b5a09ca 100644
--- a/frontend/src/router.js
+++ b/frontend/src/router.js
@@ -77,6 +77,11 @@ const routes = [
path: 'settings',
component: () => import('@/pages/ProfileSettings.vue'),
},
+ {
+ name: 'ProfileEvaluator',
+ path: 'evaluator',
+ component: () => import('@/pages/ProfileEvaluator.vue'),
+ },
],
},
{
diff --git a/lms/install.py b/lms/install.py
index be100e99..55012729 100644
--- a/lms/install.py
+++ b/lms/install.py
@@ -90,11 +90,11 @@ def create_moderator_role():
def create_evaluator_role():
- if not frappe.db.exists("Role", "Class Evaluator"):
+ if not frappe.db.exists("Role", "Batch Evaluator"):
role = frappe.new_doc("Role")
role.update(
{
- "role_name": "Class Evaluator",
+ "role_name": "Batch Evaluator",
"home_page": "",
"desk_access": 0,
}
diff --git a/lms/lms/doctype/course_evaluator/course_evaluator.json b/lms/lms/doctype/course_evaluator/course_evaluator.json
index cac4f195..72ecf771 100644
--- a/lms/lms/doctype/course_evaluator/course_evaluator.json
+++ b/lms/lms/doctype/course_evaluator/course_evaluator.json
@@ -27,7 +27,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2023-07-13 11:30:22.641076",
+ "modified": "2024-04-15 11:21:52.182338",
"modified_by": "Administrator",
"module": "LMS",
"name": "Course Evaluator",
@@ -66,7 +66,7 @@
"print": 1,
"read": 1,
"report": 1,
- "role": "Class Evaluator",
+ "role": "Batch Evaluator",
"share": 1,
"write": 1
}
diff --git a/lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json b/lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json
index d698fe17..1fe5d013 100644
--- a/lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json
+++ b/lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json
@@ -107,7 +107,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2023-12-18 20:03:27.040073",
+ "modified": "2024-04-15 11:22:43.189908",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Certificate Evaluation",
@@ -133,7 +133,7 @@
"print": 1,
"read": 1,
"report": 1,
- "role": "Class Evaluator",
+ "role": "Batch Evaluator",
"share": 1,
"write": 1
}
diff --git a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json
index 5d3bbf4d..e4ec298b 100644
--- a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json
+++ b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json
@@ -109,7 +109,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2024-01-09 10:05:13.918890",
+ "modified": "2024-04-15 11:23:03.933035",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Certificate Request",
@@ -128,18 +128,6 @@
"share": 1,
"write": 1
},
- {
- "create": 1,
- "delete": 1,
- "email": 1,
- "export": 1,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Class Evaluator",
- "share": 1,
- "write": 1
- },
{
"create": 1,
"delete": 1,
@@ -161,6 +149,18 @@
"report": 1,
"role": "LMS Student",
"share": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Batch Evaluator",
+ "share": 1,
+ "write": 1
}
],
"sort_field": "modified",
diff --git a/lms/lms/utils.py b/lms/lms/utils.py
index 1412a3df..8db01e31 100644
--- a/lms/lms/utils.py
+++ b/lms/lms/utils.py
@@ -577,7 +577,15 @@ def has_course_moderator_role(member=None):
def has_course_evaluator_role(member=None):
return frappe.db.get_value(
"Has Role",
- {"parent": member or frappe.session.user, "role": "Class Evaluator"},
+ {"parent": member or frappe.session.user, "role": "Batch Evaluator"},
+ "name",
+ )
+
+
+def has_student_role(member=None):
+ return frappe.db.get_value(
+ "Has Role",
+ {"parent": member or frappe.session.user, "role": "LMS Student"},
"name",
)
@@ -1780,3 +1788,14 @@ def get_lesson_creation_details(course, chapter, lesson):
),
"lesson": lesson_details if lesson_name else None,
}
+
+
+@frappe.whitelist()
+def get_roles(name):
+ frappe.only_for("Moderator")
+ return {
+ "moderator": has_course_moderator_role(name),
+ "course_creator": has_course_instructor_role(name),
+ "class_evaluator": has_course_evaluator_role(name),
+ "lms_student": has_student_role(name),
+ }
diff --git a/lms/overrides/user.py b/lms/overrides/user.py
index 722baacf..f667c18d 100644
--- a/lms/overrides/user.py
+++ b/lms/overrides/user.py
@@ -356,6 +356,7 @@ def get_users(or_filters, start, page_length):
@frappe.whitelist()
def save_role(user, role, value):
+ frappe.only_for("Moderator")
if cint(value):
doc = frappe.get_doc(
{