feat: class evaluators

This commit is contained in:
Jannat Patel
2023-07-13 15:10:53 +05:30
parent 9e5cd84214
commit 11e6b8a372
11 changed files with 110 additions and 9 deletions

View File

@@ -52,6 +52,7 @@ def before_uninstall():
def create_lms_roles(): def create_lms_roles():
create_course_creator_role() create_course_creator_role()
create_moderator_role() create_moderator_role()
create_evaluator_role()
def delete_lms_roles(): def delete_lms_roles():
@@ -91,6 +92,19 @@ def create_moderator_role():
role.save(ignore_permissions=True) role.save(ignore_permissions=True)
def create_evaluator_role():
if not frappe.db.exists("Role", "Class Evaluator"):
role = frappe.new_doc("Role")
role.update(
{
"role_name": "Class Evaluator",
"home_page": "",
"desk_access": 0,
}
)
role.save(ignore_permissions=True)
def delete_custom_fields(): def delete_custom_fields():
fields = [ fields = [
"user_category", "user_category",

View File

@@ -7,7 +7,8 @@
"engine": "InnoDB", "engine": "InnoDB",
"field_order": [ "field_order": [
"course", "course",
"title" "title",
"evaluator"
], ],
"fields": [ "fields": [
{ {
@@ -23,14 +24,20 @@
"fieldname": "title", "fieldname": "title",
"fieldtype": "Data", "fieldtype": "Data",
"in_list_view": 1, "in_list_view": 1,
"label": "Title", "label": "Course Title",
"read_only": 1 "read_only": 1
},
{
"fieldname": "evaluator",
"fieldtype": "Link",
"label": "Evaluator",
"options": "Course Evaluator"
} }
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"istable": 1, "istable": 1,
"links": [], "links": [],
"modified": "2022-11-11 15:51:45.560864", "modified": "2023-07-13 14:21:49.953345",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "Class Course", "name": "Class Course",

View File

@@ -27,7 +27,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2022-04-01 15:14:03.300260", "modified": "2023-07-13 11:30:22.641076",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "Course Evaluator", "name": "Course Evaluator",
@@ -45,6 +45,30 @@
"role": "System Manager", "role": "System Manager",
"share": 1, "share": 1,
"write": 1 "write": 1
},
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Moderator",
"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
} }
], ],
"sort_field": "modified", "sort_field": "modified",

View File

@@ -42,6 +42,7 @@ def get_schedule(course, date):
"Evaluator Schedule", "Evaluator Schedule",
filters={"parent": evaluator}, filters={"parent": evaluator},
fields=["day", "start_time", "end_time"], fields=["day", "start_time", "end_time"],
order_by="start_time",
) )
booked_slots = frappe.get_all( booked_slots = frappe.get_all(
"LMS Certificate Request", "LMS Certificate Request",

View File

@@ -104,7 +104,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2023-02-22 16:00:34.361934", "modified": "2023-07-13 11:30:53.432076",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "LMS Certificate Evaluation", "name": "LMS Certificate Evaluation",
@@ -121,6 +121,18 @@
"role": "System Manager", "role": "System Manager",
"share": 1, "share": 1,
"write": 1 "write": 1
},
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Class Evaluator",
"share": 1,
"write": 1
} }
], ],
"sort_field": "modified", "sort_field": "modified",

View File

@@ -93,7 +93,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2023-02-28 19:53:17.534351", "modified": "2023-07-13 11:30:41.740461",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "LMS Certificate Request", "name": "LMS Certificate Request",
@@ -111,6 +111,18 @@
"select": 1, "select": 1,
"share": 1, "share": 1,
"write": 1 "write": 1
},
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Class Evaluator",
"share": 1,
"write": 1
} }
], ],
"sort_field": "modified", "sort_field": "modified",

View File

@@ -138,7 +138,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2023-06-22 15:57:25.190084", "modified": "2023-07-13 11:30:09.097605",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "LMS Class", "name": "LMS Class",
@@ -168,6 +168,18 @@
"role": "Moderator", "role": "Moderator",
"share": 1, "share": 1,
"write": 1 "write": 1
},
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Class Evaluator",
"share": 1,
"write": 1
} }
], ],
"sort_field": "modified", "sort_field": "modified",

View File

@@ -56,3 +56,8 @@ lms.patches.v0_0.convert_course_description_to_html #11-05-2023
lms.patches.v1_0.rename_assignment_doctype lms.patches.v1_0.rename_assignment_doctype
execute:frappe.permissions.reset_perms("LMS Assignment") execute:frappe.permissions.reset_perms("LMS Assignment")
execute:frappe.permissions.reset_perms("LMS Quiz") execute:frappe.permissions.reset_perms("LMS Quiz")
lms.patches.v1_0.create_class_evaluator_role
execute:frappe.permissions.reset_perms("LMS Class")
execute:frappe.permissions.reset_perms("Course Evaluator")
execute:frappe.permissions.reset_perms("LMS Certificate Request")
execute:frappe.permissions.reset_perms("LMS Certificate Evaluation")

View File

@@ -0,0 +1,5 @@
from lms.install import create_evaluator_role
def execute():
create_evaluator_role()

View File

@@ -180,7 +180,7 @@
{% if class_courses | length %} {% if class_courses | length %}
<div class="cards-parent"> <div class="cards-parent">
{% for course in class_courses %} {% for course in class_courses %}
<div> <div class="h-100">
{{ widgets.CourseCard(course=course, read_only=False) }} {{ widgets.CourseCard(course=course, read_only=False) }}
<button class="btn icon-btn btn-default btn-block btn-remove-course" data-course="{{ course.name }}"> <button class="btn icon-btn btn-default btn-block btn-remove-course" data-course="{{ course.name }}">
<svg class="icon icon-sm"> <svg class="icon icon-sm">

View File

@@ -301,6 +301,14 @@ const show_course_modal = () => {
fieldname: "course", fieldname: "course",
reqd: 1, reqd: 1,
}, },
{
fieldtype: "Link",
options: "Course Evaluator",
label: __("Evaluator"),
fieldname: "evaluator",
fetch_from: "course.evaluator",
reqd: 1,
},
], ],
primary_action_label: __("Add"), primary_action_label: __("Add"),
primary_action(values) { primary_action(values) {
@@ -310,7 +318,7 @@ const show_course_modal = () => {
}); });
course_modal.show(); course_modal.show();
setTimeout(() => { setTimeout(() => {
$(".modal-body").css("min-height", "200px"); $(".modal-body").css("min-height", "300px");
}, 1000); }, 1000);
}; };
@@ -321,6 +329,7 @@ const add_course = (values) => {
doc: { doc: {
doctype: "Class Course", doctype: "Class Course",
course: values.course, course: values.course,
evaluator: values.evaluator,
parenttype: "LMS Class", parenttype: "LMS Class",
parentfield: "courses", parentfield: "courses",
parent: $(".class-details").data("class"), parent: $(".class-details").data("class"),