From 671b4a065091d191ed5239c5314eeff8c566e46e Mon Sep 17 00:00:00 2001 From: pateljannat Date: Wed, 2 Jun 2021 20:19:36 +0530 Subject: [PATCH] fix: api and orm --- community/lms/doctype/exercise/exercise.py | 4 --- .../exercise_submission.py | 9 ++++-- community/lms/doctype/lesson/lesson.py | 29 +++++++++++++------ community/www/batch/learn.html | 2 +- community/www/batch/learn.js | 4 +-- 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/community/lms/doctype/exercise/exercise.py b/community/lms/doctype/exercise/exercise.py index ed92d173..09b5be8b 100644 --- a/community/lms/doctype/exercise/exercise.py +++ b/community/lms/doctype/exercise/exercise.py @@ -4,7 +4,6 @@ import frappe from frappe.model.document import Document from ..lms_sketch.livecode import livecode_to_svg -from ..lesson.lesson import update_progress class Exercise(Document): def before_save(self): @@ -57,8 +56,5 @@ class Exercise(Document): solution=code) doc.insert(ignore_permissions=True) - if not (course.is_mentor(frappe.session.user) or frappe.flags.in_test): - update_progress(self.lesson) - return doc diff --git a/community/lms/doctype/exercise_submission/exercise_submission.py b/community/lms/doctype/exercise_submission/exercise_submission.py index fd631eb8..886de170 100644 --- a/community/lms/doctype/exercise_submission/exercise_submission.py +++ b/community/lms/doctype/exercise_submission/exercise_submission.py @@ -1,8 +1,13 @@ # Copyright (c) 2021, FOSS United and contributors # For license information, please see license.txt -# import frappe +import frappe from frappe.model.document import Document +from ..lesson.lesson import update_progress class ExerciseSubmission(Document): - pass + + def after_insert(self): + course_details = frappe.get_doc("LMS Course", self.course) + if not (course_details.is_mentor(frappe.session.user) or frappe.flags.in_test): + update_progress(self.lesson) diff --git a/community/lms/doctype/lesson/lesson.py b/community/lms/doctype/lesson/lesson.py index f22592ca..5129e878 100644 --- a/community/lms/doctype/lesson/lesson.py +++ b/community/lms/doctype/lesson/lesson.py @@ -53,7 +53,13 @@ class Lesson(Document): return @frappe.whitelist() -def save_progress(lesson): +def save_progress(lesson, batch): + if not frappe.db.exists("LMS Batch Membership", + { + "member": frappe.session.user, + "batch": batch + }): + return if frappe.db.exists("LMS Course Progress", { "lesson": lesson, @@ -82,15 +88,20 @@ def update_progress(lesson): user = frappe.session.user if not all_dynamic_content_submitted(lesson, user): return - course_progress = frappe.get_doc("LMS Course Progress", {"lesson": lesson, "owner": user}) - course_progress.status = "Complete" - course_progress.save() + if frappe.db.exists("LMS Course Progress", {"lesson": lesson, "owner": user}): + course_progress = frappe.get_doc("LMS Course Progress", {"lesson": lesson, "owner": user}) + course_progress.status = "Complete" + course_progress.save() def all_dynamic_content_submitted(lesson, user): - exercises = frappe.get_all("Exercise", {"lesson": lesson}, ["name"]) - all_exercises_submitted = True - for exercise in exercises: - if not frappe.db.count("Exercise Submission", {"exercise": exercise.name, "owner": user}): - all_exercises_submitted = False + exercise_names = frappe.get_list("Exercise", {"lesson": lesson}, ["name"], pluck="name") + all_exercises_submitted = False + print(exercise_names) + query = { + "exercise": ["in", exercise_names], + "owner": user + } + if frappe.db.count("Exercise Submission", query) == len(exercise_names): + all_exercises_submitted = True return all_exercises_submitted diff --git a/community/www/batch/learn.html b/community/www/batch/learn.html index 9eae61bd..d0271c61 100644 --- a/community/www/batch/learn.html +++ b/community/www/batch/learn.html @@ -28,7 +28,7 @@ {{ widgets.BatchTabs(course=course, batch=batch) }}
-

{{ lesson.title }}

+

{{ lesson.title }}

{% for s in lesson.get_sections() %}
diff --git a/community/www/batch/learn.js b/community/www/batch/learn.js index c3a6519d..4410fb08 100644 --- a/community/www/batch/learn.js +++ b/community/www/batch/learn.js @@ -1,10 +1,10 @@ frappe.ready(() => { - console.log($(".title").hasClass("is_mentor")) if (!$(".title").hasClass("is_mentor")) { frappe.call({ method: "community.lms.doctype.lesson.lesson.save_progress", args: { - lesson: $(".title").attr("data-name") + lesson: $(".title").attr("data-name"), + batch: $(".title").attr("data-batch") } }) }