From 4a76f42e35d6d13a635ef7cf7ed0b97746542db4 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 30 Aug 2023 13:01:45 +0530 Subject: [PATCH] feat: assignment url --- .../lms_assignment_submission.json | 16 ++++++++--- .../lms_assignment_submission.py | 12 ++++++++- .../assignment_submission.html | 23 +++++++++++++--- .../assignment_submission.js | 27 ++++++++++++++----- .../assignment_submission.py | 10 ++++++- 5 files changed, 72 insertions(+), 16 deletions(-) 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..c036db06 100644 --- a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.py +++ b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.py @@ -25,7 +25,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 +36,13 @@ 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 submission: doc = frappe.get_doc("LMS Assignment Submission", submission) else: @@ -44,6 +52,7 @@ def upload_assignment( "assignment": assignment, "lesson": lesson, "member": frappe.session.user, + "type": assignment_type, } ) @@ -52,6 +61,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..9a29fae1 100644 --- a/lms/www/assignment_submission/assignment_submission.html +++ b/lms/www/assignment_submission/assignment_submission.html @@ -39,7 +39,8 @@
- @@ -53,7 +54,7 @@
{% if submission.name and is_moderator %}
-
+
{{ _("Student Name") }}
{{ submission.member_name }} @@ -61,14 +62,15 @@ {% endif %}
-
+
{{ _("Question")}}
{{ assignment.question }}
+ {% if assignment.type != "URL" %}
-
+
{{ _("Submit")}}
@@ -88,6 +90,19 @@
+ {% else %} + {{ submission }} +
+
+ {{ _("Submit")}} +
+
+ {{ _("Enter a URL") }} +
+ +
+ {% endif %} {% if is_moderator %}
diff --git a/lms/www/assignment_submission/assignment_submission.js b/lms/www/assignment_submission/assignment_submission.js index a46f054f..d5147554 100644 --- a/lms/www/assignment_submission/assignment_submission.js +++ b/lms/www/assignment_submission/assignment_submission.js @@ -47,12 +47,26 @@ const upload_file = (e) => { }; const save_assignment = (e) => { - let file = $("#assignment-preview a").attr("href"); - if (!file) { - frappe.throw({ - title: __("No File"), - message: __("Please upload a file."), - }); + let data = $(e.currentTarget).data("type"); + let answer, + file = ""; + + if (data == "URL") { + answer = $("#assignment-url").val(); + if (!answer) { + frappe.throw({ + title: __("No URL"), + message: __("Please enter a URL."), + }); + } + } else { + file = $("#assignment-preview a").attr("href"); + if (!file) { + frappe.throw({ + title: __("No File"), + message: __("Please upload a file."), + }); + } } frappe.call({ @@ -61,6 +75,7 @@ const save_assignment = (e) => { assignment: $(e.currentTarget).data("assignment"), submission: $(e.currentTarget).data("submission") || "", assignment_attachment: file, + answer: answer, status: $("#status").val(), comments: $("#comments").val(), }, diff --git a/lms/www/assignment_submission/assignment_submission.py b/lms/www/assignment_submission/assignment_submission.py index 6fc9cf23..a026679e 100644 --- a/lms/www/assignment_submission/assignment_submission.py +++ b/lms/www/assignment_submission/assignment_submission.py @@ -23,7 +23,15 @@ def get_context(context): context.submission = frappe.db.get_value( "LMS Assignment Submission", submission, - ["name", "assignment_attachment", "comments", "status", "member", "member_name"], + [ + "name", + "assignment_attachment", + "answer", + "comments", + "status", + "member", + "member_name", + ], as_dict=True, ) if not context.is_moderator and frappe.session.user != context.submission.member: