diff options
author | prathamesh | 2018-02-13 12:48:19 +0530 |
---|---|---|
committer | adityacp | 2018-03-21 17:32:41 +0530 |
commit | f06a5d2ffbb1a06320935841a4ba24720e651985 (patch) | |
tree | 8b72047eafb25abb2b4556ce4633c9b10375ef5b /yaksh | |
parent | 24bce890f07b6696ef1e910443a41a54840a6e90 (diff) | |
download | online_test-f06a5d2ffbb1a06320935841a4ba24720e651985.tar.gz online_test-f06a5d2ffbb1a06320935841a4ba24720e651985.tar.bz2 online_test-f06a5d2ffbb1a06320935841a4ba24720e651985.zip |
Change default grading system behaviour
Cannot edit default system.
Code as per PEP8 standards.
Updates grade after regrade or manual grading
Field change from total marks to percentage
Removed unused fields from grades app
Diffstat (limited to 'yaksh')
-rw-r--r-- | yaksh/models.py | 20 | ||||
-rw-r--r-- | yaksh/views.py | 23 |
2 files changed, 34 insertions, 9 deletions
diff --git a/yaksh/models.py b/yaksh/models.py index f76feed..1ecb1f8 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -738,13 +738,22 @@ class CourseStatus(models.Model): course = models.ForeignKey(Course) user = models.ForeignKey(User) grade = models.CharField(max_length=255, null=True, blank=True) - total_marks = models.FloatField(default=0.0) + percentage = models.FloatField(default=0.0) + + def get_grade(self): + return self.grade def set_grade(self): - grade = self.course.grading_system.get_grade(self.total_marks) - self.grade = grade + if self.is_course_complete(): + self.calculate_percentage() + if self.course.grading_system is None: + grading_system = GradingSystem.objects.get(name='default') + else: + grading_system = self.course.grading_system + grade = grading_system.get_grade(self.percentage) + self.grade = grade - def calculate_total_marks(self): + def calculate_percentage(self): if self.is_course_complete(): quizzes = self.course.get_quizzes() total_weightage = 0 @@ -755,8 +764,7 @@ class CourseStatus(models.Model): quiz, self.user.id, self.course.id) out_of = quiz.questionpaper_set.first().total_marks sum += (marks/out_of)*quiz.weightage - self.total_marks = (sum/total_weightage)*100 - self.set_grade() + self.percentage = (sum/total_weightage)*100 def is_course_complete(self): diff --git a/yaksh/views.py b/yaksh/views.py index 30b454b..356c66e 100644 --- a/yaksh/views.py +++ b/yaksh/views.py @@ -1664,6 +1664,10 @@ def grade_user(request, quiz_id=None, user_id=None, attempt_number=None, 'comments_%d' % paper.question_paper.id, 'No comments') paper.save() + course_status = CourseStatus.objects.filter(course=course, user=user) + if course_status.exists(): + course_status.first().set_grade() + return my_render_to_response( 'yaksh/grade_user.html', context, context_instance=ci ) @@ -1919,14 +1923,27 @@ def regrade(request, course_id, question_id=None, answerpaper_id=None, answerpaper = get_object_or_404(AnswerPaper, pk=answerpaper_id) for question in answerpaper.questions.all(): details.append(answerpaper.regrade(question.id)) + course_status = CourseStatus.objects.filter(user=answerpaper.user, + course=answerpaper.course) + if course_status.exists(): + course_status.first().set_grade() if questionpaper_id is not None and question_id is not None: answerpapers = AnswerPaper.objects.filter(questions=question_id, question_paper_id=questionpaper_id, course_id=course_id) for answerpaper in answerpapers: details.append(answerpaper.regrade(question_id)) + course_status = CourseStatus.objects.filter(user=answerpaper.user, + course=answerpaper.course) + if course_status.exists(): + course_status.first().set_grade() if answerpaper_id is not None and question_id is not None: answerpaper = get_object_or_404(AnswerPaper, pk=answerpaper_id) details.append(answerpaper.regrade(question_id)) + course_status = CourseStatus.objects.filter(user=answerpaper.user, + course=answerpaper.course) + if course_status.exists(): + course_status.first().set_grade() + return grader(request, extra_context={'details': details}) @@ -2713,9 +2730,9 @@ def course_modules(request, course_id, msg=None): course_status = CourseStatus.objects.filter(course=course, user=user) if course_status.exists(): course_status = course_status.first() - if course_status.is_course_complete() and not course_status.grade: - course_status.calculate_total_marks() - context['grade'] = course_status.grade + if not course_status.grade: + course_status.set_grade() + context['grade'] = course_status.get_grade() return my_render_to_response('yaksh/course_modules.html', context) |