diff --git a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json index cf4c782b..1d68e33b 100644 --- a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json +++ b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json @@ -15,6 +15,7 @@ "member_name", "type", "assignment_attachment", + "answer", "section_break_rqal", "status", "column_break_esgd", @@ -93,18 +94,18 @@ "read_only": 1 }, { + "depends_on": "eval:doc.type != \"URL\";", "fieldname": "assignment_attachment", "fieldtype": "Attach", "label": "Assignment Attachment", - "reqd": 1 + "mandatory_depends_on": "eval:doc.type != \"URL\";" }, { "fetch_from": "assignment.type", "fieldname": "type", "fieldtype": "Select", "label": "Type", - "options": "Document\nPDF\nURL\nImage", - "read_only": 1 + "options": "Document\nPDF\nURL\nImage" }, { "fetch_from": "assignment.question", @@ -134,12 +135,19 @@ { "fieldname": "column_break_ygdu", "fieldtype": "Column Break" + }, + { + "depends_on": "eval:doc.type == \"URL\";", + "fieldname": "answer", + "fieldtype": "Long Text", + "label": "Answer", + "mandatory_depends_on": "eval:doc.type == \"URL\";" } ], "index_web_pages_for_search": 1, "links": [], "make_attachments_public": 1, - "modified": "2023-06-05 09:39:37.672298", + "modified": "2023-08-30 12:09:03.332820", "modified_by": "Administrator", "module": "LMS", "name": "LMS Assignment Submission", diff --git a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.py b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.py index 9202371c..1989f87c 100644 --- a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.py +++ b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.py @@ -4,6 +4,7 @@ import frappe from frappe import _ from frappe.model.document import Document +from frappe.utils import validate_url class LMSAssignmentSubmission(Document): @@ -25,7 +26,8 @@ class LMSAssignmentSubmission(Document): @frappe.whitelist() def upload_assignment( - assignment_attachment, + assignment_attachment=None, + answer=None, assignment=None, lesson=None, status="Not Graded", @@ -35,6 +37,17 @@ def upload_assignment( if frappe.session.user == "Guest": return + assignment_type = frappe.db.get_value("LMS Assignment", assignment, "type") + + if assignment_type == "URL" and not answer: + frappe.throw(_("Please enter the URL for assignment submission.")) + + if assignment_type == "File" and not assignment_attachment: + frappe.throw(_("Please upload the assignment file.")) + + if assignment_type == "URL" and not validate_url(answer): + frappe.throw(_("Please enter a valid URL.")) + if submission: doc = frappe.get_doc("LMS Assignment Submission", submission) else: @@ -44,6 +57,7 @@ def upload_assignment( "assignment": assignment, "lesson": lesson, "member": frappe.session.user, + "type": assignment_type, } ) @@ -52,6 +66,7 @@ def upload_assignment( "assignment_attachment": assignment_attachment, "status": status, "comments": comments, + "answer": answer, } ) doc.save(ignore_permissions=True) diff --git a/lms/www/assignment_submission/assignment_submission.html b/lms/www/assignment_submission/assignment_submission.html index 551c829f..a645b0a0 100644 --- a/lms/www/assignment_submission/assignment_submission.html +++ b/lms/www/assignment_submission/assignment_submission.html @@ -39,7 +39,8 @@