-
+
Quiz
{{ Quiz("lms_quiz_name") }}
+
+
+
+ Assignment
+
+
+ {{ Assignment("id-filetype") }}
+
+
+
+
+
+
+
+ Supported File Types for Assignment
+
+
+ Syntax
+
+
+
+
+
+ .doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document
+
+
+ Document
+
+
+
+
+
+
+
+ .png, .jpg, .jpeg
+
+
+ Image
+
+
`);
}
});
diff --git a/school/lms/doctype/lesson_assignment/lesson_assignment.py b/school/lms/doctype/lesson_assignment/lesson_assignment.py
index 1c569c92..7c6b963b 100644
--- a/school/lms/doctype/lesson_assignment/lesson_assignment.py
+++ b/school/lms/doctype/lesson_assignment/lesson_assignment.py
@@ -10,15 +10,19 @@ class LessonAssignment(Document):
@frappe.whitelist()
def upload_assignment(assignment, lesson, identifier):
- lesson_work = frappe.get_doc({
+ args = {
"doctype": "Lesson Assignment",
"lesson": lesson,
"user": frappe.session.user,
- "assignment": assignment,
"id": identifier
- })
- lesson_work.save(ignore_permissions=True)
- return lesson_work.name
+ }
+ lesson_work = frappe.db.exists(args)
+ if lesson_work:
+ frappe.db.set_value("Lesson Assignment", lesson_work[0], "assignment", assignment)
+ else:
+ args.update({"assignment": assignment})
+ lesson_work = frappe.get_doc(args)
+ lesson_work.save(ignore_permissions=True)
@frappe.whitelist()
def get_assignment(lesson):
@@ -28,6 +32,10 @@ def get_assignment(lesson):
"user": frappe.session.user
},
["lesson", "user", "id", "assignment"])
+ if len(assignments):
+ for assignment in assignments:
+ assignment.file_name = frappe.db.get_value("File", {"file_url": assignment.assignment}, "file_name")
+ return assignments
diff --git a/school/plugins.py b/school/plugins.py
index 40c3a2a8..e320ee20 100644
--- a/school/plugins.py
+++ b/school/plugins.py
@@ -121,8 +121,16 @@ def youtube_video_renderer(video_id):
def video_renderer(src):
return "
".format(src)
-def assignment_renderer(id):
- return frappe.render_template("templates/assignment.html", {"id": id})
+def assignment_renderer(detail):
+ supported_types = {
+ "Document": ".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "PDF": ".pdf",
+ "Image": ".png, .jpg, .jpeg",
+ "Video": "video/*"
+ }
+ file_type = detail.split("-")[1]
+ accept = supported_types[file_type] if file_type else ""
+ return frappe.render_template("templates/assignment.html", {"id": detail.split("-")[0], "accept": accept})
def show_custom_signup():
if frappe.db.get_single_value("LMS Settings", "terms_of_use"):
diff --git a/school/public/css/style.css b/school/public/css/style.css
index 80848fc8..f4edb3ec 100644
--- a/school/public/css/style.css
+++ b/school/public/css/style.css
@@ -1458,3 +1458,8 @@ pre {
.no-discussions {
width: 80% !important;
}
+
+.preview-work {
+ width: 50%;
+ justify-content: space-between;
+}
diff --git a/school/templates/assignment.html b/school/templates/assignment.html
index d0355355..ff543469 100644
--- a/school/templates/assignment.html
+++ b/school/templates/assignment.html
@@ -1,10 +1,10 @@