From 65c368a1360a83c2b10458ec61a4b74d9ac8e9f5 Mon Sep 17 00:00:00 2001 From: adityacp Date: Thu, 1 Mar 2018 19:00:55 +0530 Subject: Show student grade in course status page --- yaksh/models.py | 12 +++++++++++- yaksh/templates/yaksh/course_detail.html | 6 ++++++ yaksh/templatetags/custom_filters.py | 5 +++++ yaksh/test_models.py | 3 +++ 4 files changed, 25 insertions(+), 1 deletion(-) (limited to 'yaksh') diff --git a/yaksh/models.py b/yaksh/models.py index 1ecb1f8..32d7b3d 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -725,6 +725,14 @@ class Course(models.Model): percent = round((count / len(modules))) return percent + def get_grade(self, user): + course_status = CourseStatus.objects.filter(course=self, user=user) + if course_status.exists(): + grade = course_status.first().get_grade() + else: + grade = "NA" + return grade + def __str__(self): return self.name @@ -752,6 +760,7 @@ class CourseStatus(models.Model): grading_system = self.course.grading_system grade = grading_system.get_grade(self.percentage) self.grade = grade + self.save() def calculate_percentage(self): if self.is_course_complete(): @@ -765,7 +774,7 @@ class CourseStatus(models.Model): out_of = quiz.questionpaper_set.first().total_marks sum += (marks/out_of)*quiz.weightage self.percentage = (sum/total_weightage)*100 - + self.save() def is_course_complete(self): modules = self.course.get_learning_modules() @@ -776,6 +785,7 @@ class CourseStatus(models.Model): break return complete + ############################################################################### class ConcurrentUser(models.Model): concurrent_user = models.OneToOneField(User) diff --git a/yaksh/templates/yaksh/course_detail.html b/yaksh/templates/yaksh/course_detail.html index a5d10a7..9fcae68 100644 --- a/yaksh/templates/yaksh/course_detail.html +++ b/yaksh/templates/yaksh/course_detail.html @@ -136,12 +136,14 @@ Sr No. Students Total + Grade Modules + {% if modules %} {% for module in modules %} @@ -170,6 +172,10 @@ {% course_completion_percent course student as c_percent %} {{c_percent}} % + + + {% course_grade course student as grade %} + {{grade}} {% if modules %} {% for module in modules %} diff --git a/yaksh/templatetags/custom_filters.py b/yaksh/templatetags/custom_filters.py index 3c2c6fd..717c9bb 100644 --- a/yaksh/templatetags/custom_filters.py +++ b/yaksh/templatetags/custom_filters.py @@ -62,3 +62,8 @@ def module_completion_percent(course, module, user): @register.simple_tag def course_completion_percent(course, user): return course.percent_completed(user) + + +@register.simple_tag +def course_grade(course, user): + return course.get_grade(user) diff --git a/yaksh/test_models.py b/yaksh/test_models.py index 50d1843..4e2047e 100644 --- a/yaksh/test_models.py +++ b/yaksh/test_models.py @@ -1896,3 +1896,6 @@ class CourseStatusTestCases(unittest.TestCase): self.course_status.set_grade() # Then self.assertEqual(self.course_status.get_grade(), 'B') + + # Test get course grade after completion + self.assertEqual(self.course.get_grade(self.answerpaper1.user), 'B') -- cgit