From f691ebd1463aef15f1086ce8120d7fc368838486 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 23 Nov 2022 14:39:18 +0530 Subject: [PATCH] feat: class evaluation --- .../lms_certificate_evaluation.json | 20 ++- lms/lms/web_form/evaluation/__init__.py | 0 lms/lms/web_form/evaluation/evaluation.js | 7 + lms/lms/web_form/evaluation/evaluation.json | 149 ++++++++++++++++++ lms/lms/web_form/evaluation/evaluation.py | 12 ++ lms/www/classes/progress.html | 81 ++++++---- lms/www/classes/progress.py | 5 + 7 files changed, 238 insertions(+), 36 deletions(-) create mode 100644 lms/lms/web_form/evaluation/__init__.py create mode 100644 lms/lms/web_form/evaluation/evaluation.js create mode 100644 lms/lms/web_form/evaluation/evaluation.json create mode 100644 lms/lms/web_form/evaluation/evaluation.py 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 fb84783f..0bd477d9 100644 --- a/lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json +++ b/lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json @@ -6,15 +6,17 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "course", "member", "member_name", + "column_break_5", + "course", + "status", + "section_break_6", "date", "start_time", "end_time", - "column_break_5", + "column_break_10", "rating", - "status", "summary" ], "fields": [ @@ -48,7 +50,7 @@ }, { "fieldname": "summary", - "fieldtype": "Text", + "fieldtype": "Small Text", "label": "Summary" }, { @@ -83,11 +85,19 @@ "label": "Status", "options": "Pass\nFail", "reqd": 1 + }, + { + "fieldname": "section_break_6", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_10", + "fieldtype": "Column Break" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2022-04-28 10:24:09.832428", + "modified": "2022-11-23 11:49:01.400292", "modified_by": "Administrator", "module": "LMS", "name": "LMS Certificate Evaluation", diff --git a/lms/lms/web_form/evaluation/__init__.py b/lms/lms/web_form/evaluation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lms/lms/web_form/evaluation/evaluation.js b/lms/lms/web_form/evaluation/evaluation.js new file mode 100644 index 00000000..d051682d --- /dev/null +++ b/lms/lms/web_form/evaluation/evaluation.js @@ -0,0 +1,7 @@ +frappe.ready(function() { + frappe.web_form.after_save = () => { + setTimeout(() => { + window.history.back(); + }); + }; +}) diff --git a/lms/lms/web_form/evaluation/evaluation.json b/lms/lms/web_form/evaluation/evaluation.json new file mode 100644 index 00000000..47d79dcd --- /dev/null +++ b/lms/lms/web_form/evaluation/evaluation.json @@ -0,0 +1,149 @@ +{ + "accept_payment": 0, + "allow_comments": 0, + "allow_delete": 0, + "allow_edit": 0, + "allow_incomplete": 0, + "allow_multiple": 0, + "allow_print": 0, + "amount": 0.0, + "amount_based_on_field": 0, + "apply_document_permissions": 0, + "button_label": "Save", + "creation": "2022-11-23 11:59:33.533053", + "doc_type": "LMS Certificate Evaluation", + "docstatus": 0, + "doctype": "Web Form", + "idx": 0, + "introduction_text": "", + "is_standard": 1, + "list_columns": [], + "login_required": 0, + "max_attachment_size": 0, + "modified": "2022-11-23 12:08:15.978899", + "modified_by": "Administrator", + "module": "LMS", + "name": "evaluation", + "owner": "Administrator", + "payment_button_label": "Buy Now", + "published": 1, + "route": "evaluation", + "show_attachments": 0, + "show_list": 0, + "show_sidebar": 0, + "title": "Evaluation", + "web_form_fields": [ + { + "allow_read_on_all_link_options": 0, + "fieldname": "member", + "fieldtype": "Link", + "hidden": 0, + "label": "Member", + "max_length": 0, + "max_value": 0, + "options": "User", + "read_only": 0, + "reqd": 1, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "course", + "fieldtype": "Link", + "hidden": 0, + "label": "Course", + "max_length": 0, + "max_value": 0, + "options": "LMS Course", + "read_only": 0, + "reqd": 1, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "date", + "fieldtype": "Date", + "hidden": 0, + "label": "Date", + "max_length": 0, + "max_value": 0, + "read_only": 0, + "reqd": 1, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "start_time", + "fieldtype": "Time", + "hidden": 0, + "label": "Start Time", + "max_length": 0, + "max_value": 0, + "read_only": 0, + "reqd": 1, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "end_time", + "fieldtype": "Time", + "hidden": 0, + "label": "End Time", + "max_length": 0, + "max_value": 0, + "read_only": 0, + "reqd": 0, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "", + "fieldtype": "Column Break", + "hidden": 0, + "label": "", + "max_length": 0, + "max_value": 0, + "options": "", + "read_only": 0, + "reqd": 0, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "rating", + "fieldtype": "Rating", + "hidden": 0, + "label": "Rating", + "max_length": 0, + "max_value": 0, + "read_only": 0, + "reqd": 1, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "status", + "fieldtype": "Select", + "hidden": 0, + "label": "Status", + "max_length": 0, + "max_value": 0, + "options": "Pass\nFail", + "read_only": 0, + "reqd": 1, + "show_in_filter": 0 + }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "summary", + "fieldtype": "Small Text", + "hidden": 0, + "label": "Summary", + "max_length": 0, + "max_value": 0, + "read_only": 0, + "reqd": 0, + "show_in_filter": 0 + } + ] +} diff --git a/lms/lms/web_form/evaluation/evaluation.py b/lms/lms/web_form/evaluation/evaluation.py new file mode 100644 index 00000000..c10b9cea --- /dev/null +++ b/lms/lms/web_form/evaluation/evaluation.py @@ -0,0 +1,12 @@ +import frappe +from frappe import _ +from lms.lms.utils import has_course_moderator_role + +def get_context(context): + + if not has_course_moderator_role(): + message = "Only Moderators have access to this page." + if frappe.session.user == "Guest": + message = "Please login to access this page." + + raise frappe.PermissionError(_(message)) diff --git a/lms/www/classes/progress.html b/lms/www/classes/progress.html index 80a0307a..b5a0c415 100644 --- a/lms/www/classes/progress.html +++ b/lms/www/classes/progress.html @@ -4,14 +4,24 @@ {% endblock %} +{% block head_include %} + {% include "public/icons/symbol-defs.svg" %} +{% endblock %} + + {% block content %}
{{ BreadCrumb(class_info, student) }}
-
- {{ frappe.utils.format_datetime(student.last_active, "medium") }} +
+ + {{ frappe.utils.format_datetime(student.last_active, "medium") }} + + + {{ _("Evaluate") }} +
{{ student.full_name }} @@ -49,12 +59,12 @@
- + @@ -70,23 +80,18 @@ {% set total_questions = frappe.db.count("LMS Quiz Question", {"parent": quiz.name}) %} - - + {% if has_submitted %} - - + + {% else %} - + - - + + {% if has_submitted %} - + {% else %} - + {% endfor %} + + {% for evaluation in course.evaluations %} + {% set color = "green" if evaluation.status == "Pass" else "red" %} + + + + + + + {% endfor %}
- {{ _("Activity") }} - {{ _("Type") }} + {{ _("Title") }} + {{ _("Score/Status") }}
- {{ quiz.title }} - + + + + {{ _("Quiz") }} {{ quiz.title }} - {{ submission.score }}/{{ total_questions }} - - {{ frappe.utils.format_date(submission.creation, "medium") }} - {{ submission.score }}/{{ total_questions }}{{ frappe.utils.format_date(submission.creation, "medium") }} - - - -
{{ _("Not Attempted") }} @@ -97,7 +102,6 @@ {% endfor %} {% for assignment in course.assignments %} - {% set filters = { "member": student.name, "course": course.course, "lesson": assignment.name } %} {% set has_submitted = frappe.db.exists("Lesson Assignment", filters) %} {% set submission = frappe.db.get_value("Lesson Assignment", filters, ["assignment", "creation", "status"], as_dict=True) %} @@ -105,12 +109,12 @@ {% set color = "green" if status == "Pass" else "red" if status == "Fail" else "orange" %}
- {{ assignment.title }} - - {{ _("Assignment") }} - + + + + {{ _("Assignment") }}{{ assignment.title }} {% if status == "Not Graded" %} @@ -121,13 +125,9 @@ {% endif %} - {{ frappe.utils.format_date(submission.creation, "medium") }} - {{ frappe.utils.format_date(submission.creation, "medium") }} - - - -
{{ _("Not Attempted") }} @@ -136,6 +136,25 @@ {% endif %}
+ + + + {{ _("Evaluation") }} + - +
+ {{ evaluation.status }} +
+
{{ frappe.utils.format_date(evaluation.creation, "medium") }}
{% else %} diff --git a/lms/www/classes/progress.py b/lms/www/classes/progress.py index eb701cf5..18e5ff7a 100644 --- a/lms/www/classes/progress.py +++ b/lms/www/classes/progress.py @@ -45,5 +45,10 @@ def get_context(context): {"course": course.course, "question": ["is", "set"]}, ["name", "title"], ) + course.evaluations = frappe.get_all( + "LMS Certificate Evaluation", + {"course": course.course, "member": context.student.name}, + ["rating", "status", "creation"] + ) context.class_courses = class_courses