fix: misc quiz submission issues

This commit is contained in:
Jannat Patel
2024-11-28 22:32:23 +05:30
parent 0e6df83961
commit 97543a43eb
10 changed files with 100 additions and 26 deletions

View File

@@ -34,7 +34,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2024-11-20 12:26:02.214628",
"modified": "2024-11-28 22:06:16.742867",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Program",
@@ -80,5 +80,6 @@
],
"sort_field": "creation",
"sort_order": "DESC",
"states": []
"states": [],
"track_changes": 1
}

View File

@@ -10,6 +10,7 @@ class LMSProgram(Document):
def validate(self):
self.validate_program_courses()
self.validate_program_members()
self.validate_title()
def validate_program_courses(self):
courses = [row.course for row in self.program_courses]
@@ -30,3 +31,7 @@ class LMSProgram(Document):
frappe.bold(next(iter(duplicates)))
)
)
def validate_title(self):
if self.has_value_changed("title"):
frappe.rename_doc(self.doctype, self.name, self.title)

View File

@@ -145,7 +145,6 @@ def quiz_summary(quiz, results):
submission = frappe.new_doc("LMS Quiz Submission")
# Score and percentage are calculated by the controller function
print(results)
submission.update(
{
"doctype": "LMS Quiz Submission",

View File

@@ -5,6 +5,7 @@ import frappe
from frappe.model.document import Document
from frappe.utils import cint
from frappe import _
from frappe.desk.doctype.notification_log.notification_log import make_notification_logs
class LMSQuizSubmission(Document):
@@ -12,6 +13,9 @@ class LMSQuizSubmission(Document):
self.validate_marks()
self.set_percentage()
def on_update(self):
self.notify_member()
def validate_marks(self):
for row in self.result:
if cint(row.marks) > cint(row.marks_out_of):
@@ -26,3 +30,25 @@ class LMSQuizSubmission(Document):
def set_percentage(self):
if self.score and self.score_out_of:
self.percentage = (self.score / self.score_out_of) * 100
def notify_member(self):
print(self.is_new())
if self.score != 0 and self.has_value_changed("score"):
notification = frappe._dict(
{
"subject": _("You have got a score of {0} for the quiz {1}").format(
self.score, self.quiz_title
),
"email_content": _(
"There has been an update on your submission. You have got a score of {0} for the quiz {1}"
).format(self.score, self.quiz_title),
"document_type": self.doctype,
"document_name": self.name,
"for_user": self.member,
"from_user": "Administrator",
"type": "Alert",
"link": "",
}
)
make_notification_logs(notification, [self.member])

View File

@@ -6,11 +6,7 @@ import razorpay
import requests
from frappe import _
from frappe.desk.doctype.dashboard_chart.dashboard_chart import get_result
from frappe.desk.doctype.notification_log.notification_log import (
make_notification_logs,
enqueue_create_notification,
get_title,
)
from frappe.desk.doctype.notification_log.notification_log import make_notification_logs
from frappe.desk.search import get_user_groups
from frappe.desk.notifications import extract_mentions
from frappe.utils import (