diff --git a/lms/lms/doctype/lms_quiz/lms_quiz.py b/lms/lms/doctype/lms_quiz/lms_quiz.py
index 6d5b4a47..3b706ffd 100644
--- a/lms/lms/doctype/lms_quiz/lms_quiz.py
+++ b/lms/lms/doctype/lms_quiz/lms_quiz.py
@@ -81,10 +81,8 @@ def quiz_summary(quiz, results):
for point in result["is_correct"]:
correct = correct and point
- result["result"] = "Right" if correct else "Wrong"
+ result["is_correct"] = correct
score += correct
-
- del result["is_correct"]
del result["question_index"]
frappe.get_doc(
diff --git a/lms/lms/doctype/lms_quiz_result/lms_quiz_result.json b/lms/lms/doctype/lms_quiz_result/lms_quiz_result.json
index 113f0612..93487a38 100644
--- a/lms/lms/doctype/lms_quiz_result/lms_quiz_result.json
+++ b/lms/lms/doctype/lms_quiz_result/lms_quiz_result.json
@@ -7,33 +7,36 @@
"field_order": [
"question",
"answer",
- "result"
+ "is_correct"
],
"fields": [
{
"fieldname": "question",
"fieldtype": "Text",
"in_list_view": 1,
- "label": "Question"
- },
- {
- "fieldname": "result",
- "fieldtype": "Select",
- "in_list_view": 1,
- "label": "Result",
- "options": "Right\nWrong"
+ "label": "Question",
+ "read_only": 1
},
{
"fieldname": "answer",
"fieldtype": "Data",
"in_list_view": 1,
- "label": "Users Response"
+ "label": "Users Response",
+ "read_only": 1
+ },
+ {
+ "default": "0",
+ "fieldname": "is_correct",
+ "fieldtype": "Check",
+ "in_list_view": 1,
+ "label": "Is Correct",
+ "read_only": 1
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
- "modified": "2021-10-12 10:32:45.139121",
+ "modified": "2022-11-24 11:15:45.931119",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Quiz Result",
@@ -41,5 +44,6 @@
"permissions": [],
"sort_field": "modified",
"sort_order": "DESC",
+ "states": [],
"track_changes": 1
}
\ No newline at end of file
diff --git a/lms/patches.txt b/lms/patches.txt
index 872f96c9..afbf07ed 100644
--- a/lms/patches.txt
+++ b/lms/patches.txt
@@ -38,3 +38,4 @@ lms.patches.v0_0.set_member_in_progress #09-11-2022
lms.patches.v0_0.convert_progress_to_float
lms.patches.v0_0.add_pages_to_nav #11-11-2022
lms.patches.v0_0.change_role_names
+lms.patches.v0_0.quiz_submission_result
diff --git a/lms/patches/v0_0/quiz_submission_result.py b/lms/patches/v0_0/quiz_submission_result.py
new file mode 100644
index 00000000..493144c7
--- /dev/null
+++ b/lms/patches/v0_0/quiz_submission_result.py
@@ -0,0 +1,11 @@
+import frappe
+
+
+def execute():
+ frappe.reload_doc("lms", "doctype", "lms_quiz_submission")
+ frappe.reload_doc("lms", "doctype", "lms_quiz_result")
+ results = frappe.get_all("LMS Quiz Result", fields=["name", "result"])
+
+ for result in results:
+ value = 1 if result.result == "Right" else 0
+ frappe.db.set_value("LMS Quiz Result", result.name, "is_correct", value)
diff --git a/lms/public/css/style.css b/lms/public/css/style.css
index 23933d60..fdb0dc48 100644
--- a/lms/public/css/style.css
+++ b/lms/public/css/style.css
@@ -1874,6 +1874,7 @@ select {
background-repeat: no-repeat;
background-size: 0.75rem;
padding-right: 2.5rem;
+ text-align: left;
-webkit-print-color-adjust: exact;
}
diff --git a/lms/www/assignments/assignment.html b/lms/www/assignments/assignment.html
index f56cb38a..f319ba61 100644
--- a/lms/www/assignments/assignment.html
+++ b/lms/www/assignments/assignment.html
@@ -7,57 +7,72 @@
{% block content %}
-
+
{{ _("Assignment Grading") }}
-
-
- {{ _("Open Attachment") }}
-
-
-
-
-
- {{ _("Member") }}:
-
-
- {{ assignment.member_name }}
-
-
-
- {% set course_title = frappe.db.get_value("LMS Course", assignment.course, "title") %}
-
- {{ _("Course") }}:
-
-
- {{ course_title }}
-
-
-
- {% set lesson_title = frappe.db.get_value("Course Lesson", assignment.lesson, "title") %}
- {{ _("Lesson") }}:
-
- {{ lesson_title }}
-
-
-
-
{{ _("Comments") }}:
-
-
-
- {{ _("Save") }}
-
-
+ {{ AssignmentForm(assignment) }}
+
{% endblock %}
+
+
+{% macro AssignmentForm(assignment) %}
+{% set course_title = frappe.db.get_value("LMS Course", assignment.course, "title") %}
+{% set lesson_title = frappe.db.get_value("Course Lesson", assignment.lesson, "title") %}
+
+
+{% endmacro %}
diff --git a/lms/www/assignments/assignment.js b/lms/www/assignments/assignment.js
index aba82d71..418e7567 100644
--- a/lms/www/assignments/assignment.js
+++ b/lms/www/assignments/assignment.js
@@ -29,11 +29,17 @@ const set_result = () => {
};
const save_assignment = (e) => {
+ e.preventDefault();
+ if (!["Pass", "Fail"].includes(this.result))
+ frappe.throw({
+ title: __("Not Graded"),
+ message: __("Please grade the assignment."),
+ });
frappe.call({
method: "lms.lms.doctype.lesson_assignment.lesson_assignment.grade_assignment",
args: {
name: $(e.currentTarget).data("assignment"),
- result: self.result,
+ result: this.result,
comments: $("#comments").val(),
},
callback: (data) => {
@@ -41,6 +47,9 @@ const save_assignment = (e) => {
message: __("Saved"),
indicator: "green",
});
+ setTimeout(() => {
+ window.history.go(-2);
+ }, 2000);
},
});
};
diff --git a/lms/www/batch/learn.js b/lms/www/batch/learn.js
index dc79ee5b..03686996 100644
--- a/lms/www/batch/learn.js
+++ b/lms/www/batch/learn.js
@@ -234,6 +234,7 @@ const check_answer = (e = undefined) => {
const parse_options = () => {
let answer = [];
let is_correct = [];
+
$(".active-question input").each((i, element) => {
let correct = parseInt($(element).attr("data-correct"));
if ($(element).prop("checked")) {
@@ -247,6 +248,7 @@ const parse_options = () => {
: add_icon(element, "minus-circle");
}
});
+
return [answer, is_correct];
};
diff --git a/lms/www/classes/class.py b/lms/www/classes/class.py
index 14f598db..7ff4337d 100644
--- a/lms/www/classes/class.py
+++ b/lms/www/classes/class.py
@@ -21,6 +21,7 @@ def get_context(context):
["name", "title", "start_date", "end_date", "description"],
as_dict=True,
)
+
context.published_courses = frappe.get_all(
"LMS Course", {"published": 1}, ["name", "title"]
)
diff --git a/lms/www/classes/progress.html b/lms/www/classes/progress.html
index 70d69d79..70f89eb4 100644
--- a/lms/www/classes/progress.html
+++ b/lms/www/classes/progress.html
@@ -79,8 +79,8 @@
{% set submission = frappe.db.get_value("LMS Quiz Submission", filters, ["score", "creation"], as_dict=True) %}
{% set total_questions = frappe.db.count("LMS Quiz Question", {"parent": quiz.name}) %}
-
-
+
+
@@ -108,26 +108,28 @@
{% set status = submission.status %}
{% set color = "green" if status == "Pass" else "red" if status == "Fail" else "orange" %}
-
-
+
+
- {{ _("Assignment") }}
+ {{ _("Assignment") }}
+
+
{{ assignment.title }}
+
{% if has_submitted %}
- {% if status == "Not Graded" %}
- {{ _("Grade") }}
- {% else %}
{{ status }}
- {% endif %}
+
{{ frappe.utils.format_date(submission.creation, "medium") }}
+
{% else %}
-
+
{{ _("Not Attempted") }}
diff --git a/lms/www/quiz_result/quiz_result.html b/lms/www/quiz_result/quiz_result.html
new file mode 100644
index 00000000..b992110c
--- /dev/null
+++ b/lms/www/quiz_result/quiz_result.html
@@ -0,0 +1,33 @@
+{% extends "templates/base.html" %}
+{% block title %}
+ {{ _("Quiz Submission") }}
+{% endblock %}
+
+
+{% block content %}
+
+
+
+
+ {{ _("Quiz Submission") }}
+
+ {% for question in questions %}
+
+ {{ question.question }}
+
+ {{ question.is_correct }}
+ {{ question.answer }}
+ {% for i in range(1,5) %}
+ {% set num = frappe.utils.cstr(i) %}
+ {% set option = question["option_" + num] %}
+ {% if question["option_" + num] %}
+
+ {{ question["option_" + num] }}
+
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/lms/www/quiz_result/quiz_result.py b/lms/www/quiz_result/quiz_result.py
new file mode 100644
index 00000000..62e67400
--- /dev/null
+++ b/lms/www/quiz_result/quiz_result.py
@@ -0,0 +1,26 @@
+import frappe
+
+
+def get_context(context):
+ context.no_cache = 1
+ name = frappe.form_dict["subname"]
+
+ context.submission = frappe.db.get_value(
+ "LMS Quiz Submission", name, ["name", "quiz"], as_dict=1
+ )
+
+ questions = frappe.get_all(
+ "LMS Quiz Result", {"parent": name}, ["question", "is_correct", "answer"]
+ )
+
+ for question in questions:
+ options = frappe.db.get_value(
+ "LMS Quiz Question",
+ {"question": question.question},
+ ["option_1", "option_2", "option_3", "option_4"],
+ as_dict=1,
+ )
+ question.update(options)
+ question.answer = question.answer.split(",")
+
+ context.questions = questions