From 348f2bc4f727b27abd9878334e886527479d260c Mon Sep 17 00:00:00 2001
From: adityacp
Date: Fri, 17 Apr 2020 16:54:35 +0530
Subject: Merge monitor, grade user and regrade intosingle dashboard
---
yaksh/tasks.py | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
create mode 100644 yaksh/tasks.py
(limited to 'yaksh/tasks.py')
diff --git a/yaksh/tasks.py b/yaksh/tasks.py
new file mode 100644
index 0000000..c68faa9
--- /dev/null
+++ b/yaksh/tasks.py
@@ -0,0 +1,83 @@
+# Python Imports
+from __future__ import absolute_import, unicode_literals
+from textwrap import dedent
+
+# Django and celery imports
+from celery import shared_task
+from celery.utils.log import get_task_logger
+from django.urls import reverse
+from django.shortcuts import get_object_or_404
+
+# Local imports
+from .models import Course, QuestionPaper, Quiz, AnswerPaper, CourseStatus
+from notifications_plugin.models import NotificationMessage, Notification
+
+
+@shared_task
+def regrade_papers(data):
+ question_id = data.get("question_id")
+ questionpaper_id = data.get("questionpaper_id")
+ answerpaper_id = data.get("answerpaper_id")
+ course_id = data.get("course_id")
+ user_id = data.get("user_id")
+ quiz_id = data.get("quiz_id")
+ quiz_name = data.get("quiz_name")
+ course_name = data.get("course_name")
+
+ logger = get_task_logger(__name__)
+
+ try:
+ if answerpaper_id is not None and question_id is None:
+ # Regrade specific user for all questions
+ answerpaper = AnswerPaper.objects.get(id=answerpaper_id)
+ for question in answerpaper.questions.all():
+ answerpaper.regrade(question.id)
+ course_status = CourseStatus.objects.filter(
+ user=answerpaper.user, course=answerpaper.course)
+ if course_status.exists():
+ course_status.first().set_grade()
+ url = reverse("yaksh:grade_user",
+ args=[quiz_id, answerpaper.user_id, course_id])
+
+ elif answerpaper_id is not None and question_id is not None:
+ # Regrade specific user for a specific question
+ answerpaper = AnswerPaper.objects.get(pk=answerpaper_id)
+ answerpaper.regrade(question_id)
+ course_status = CourseStatus.objects.filter(user=answerpaper.user,
+ course=answerpaper.course)
+ if course_status.exists():
+ course_status.first().set_grade()
+ url = reverse("yaksh:grade_user",
+ args=[quiz_id, answerpaper.user_id, course_id])
+
+ elif questionpaper_id is not None and question_id is not None:
+ # Regrade all users for a specific question
+ answerpapers = AnswerPaper.objects.filter(
+ questions=question_id,
+ question_paper_id=questionpaper_id, course_id=course_id)
+ for answerpaper in answerpapers:
+ answerpaper.regrade(question_id)
+ course_status = CourseStatus.objects.filter(
+ user=answerpaper.user, course=answerpaper.course)
+ if course_status.exists():
+ course_status.first().set_grade()
+ url = reverse("yaksh:grade_user", args=[quiz_id, course_id])
+
+ message = dedent("""
+ Quiz re-evaluation is complete Click here to view
+ """.format(url)
+ )
+ nm = NotificationMessage.objects.add_single_message(
+ user_id, "{0} re-evaluation status".format(quiz_name),
+ message, "success"
+ )
+ except Exception as e:
+ nm = NotificationMessage.objects.add_single_message(
+ user_id, "{0} re-evaluation status".format(quiz_name),
+ "Unable to regrade {0}. Try again later".format(quiz_name),
+ "warning"
+ )
+ logger.error(e)
+ notification = Notification.objects.add_single_notification(
+ user_id, nm.id
+ )
--
cgit
From aa55eca2e8c745ef22226b4e41eae5f060154aa1 Mon Sep 17 00:00:00 2001
From: adityacp
Date: Mon, 20 Apr 2020 16:33:55 +0530
Subject: Change tasks, test_views, templates
- Change notification message in celery task
- Fix views test for regrade
- Change name from Grader to Quizzes in manage.html navbar
---
yaksh/tasks.py | 37 ++++++++++++++++++-------------------
1 file changed, 18 insertions(+), 19 deletions(-)
(limited to 'yaksh/tasks.py')
diff --git a/yaksh/tasks.py b/yaksh/tasks.py
index c68faa9..1c4658b 100644
--- a/yaksh/tasks.py
+++ b/yaksh/tasks.py
@@ -4,7 +4,6 @@ from textwrap import dedent
# Django and celery imports
from celery import shared_task
-from celery.utils.log import get_task_logger
from django.urls import reverse
from django.shortcuts import get_object_or_404
@@ -24,31 +23,31 @@ def regrade_papers(data):
quiz_name = data.get("quiz_name")
course_name = data.get("course_name")
- logger = get_task_logger(__name__)
+ url = reverse("yaksh:grade_user", args=[quiz_id, course_id])
try:
if answerpaper_id is not None and question_id is None:
# Regrade specific user for all questions
answerpaper = AnswerPaper.objects.get(id=answerpaper_id)
+ url = reverse("yaksh:grade_user",
+ args=[quiz_id, answerpaper.user_id, course_id])
for question in answerpaper.questions.all():
answerpaper.regrade(question.id)
course_status = CourseStatus.objects.filter(
user=answerpaper.user, course=answerpaper.course)
if course_status.exists():
course_status.first().set_grade()
- url = reverse("yaksh:grade_user",
- args=[quiz_id, answerpaper.user_id, course_id])
elif answerpaper_id is not None and question_id is not None:
# Regrade specific user for a specific question
answerpaper = AnswerPaper.objects.get(pk=answerpaper_id)
+ url = reverse("yaksh:grade_user",
+ args=[quiz_id, answerpaper.user_id, course_id])
answerpaper.regrade(question_id)
- course_status = CourseStatus.objects.filter(user=answerpaper.user,
- course=answerpaper.course)
+ course_status = CourseStatus.objects.filter(
+ user=answerpaper.user, course=answerpaper.course)
if course_status.exists():
course_status.first().set_grade()
- url = reverse("yaksh:grade_user",
- args=[quiz_id, answerpaper.user_id, course_id])
elif questionpaper_id is not None and question_id is not None:
# Regrade all users for a specific question
@@ -61,23 +60,23 @@ def regrade_papers(data):
user=answerpaper.user, course=answerpaper.course)
if course_status.exists():
course_status.first().set_grade()
- url = reverse("yaksh:grade_user", args=[quiz_id, course_id])
message = dedent("""
- Quiz re-evaluation is complete Click here to view
+ Quiz re-evaluation is complete.
+ Click here to view
""".format(url)
)
- nm = NotificationMessage.objects.add_single_message(
- user_id, "{0} re-evaluation status".format(quiz_name),
- message, "success"
- )
+ notification_type = "success"
except Exception as e:
- nm = NotificationMessage.objects.add_single_message(
- user_id, "{0} re-evaluation status".format(quiz_name),
- "Unable to regrade {0}. Try again later".format(quiz_name),
- "warning"
+ message = dedent("""
+ Unable to regrade please try again.
+ Click here to view""".format(url)
)
- logger.error(e)
+ notification_type = "warning"
+ nm = NotificationMessage.objects.add_single_message(
+ user_id, "{0} re-evaluation status".format(quiz_name),
+ message, notification_type
+ )
notification = Notification.objects.add_single_notification(
user_id, nm.id
)
--
cgit