summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yaksh/test_views.py93
-rw-r--r--yaksh/views.py26
2 files changed, 103 insertions, 16 deletions
diff --git a/yaksh/test_views.py b/yaksh/test_views.py
index c1c76b3..14c0c94 100644
--- a/yaksh/test_views.py
+++ b/yaksh/test_views.py
@@ -169,6 +169,14 @@ class TestProfile(TestCase):
self.assertEqual(updated_profile.is_email_verified, True)
self.assertTemplateUsed(get_response, 'yaksh/activation_status.html')
+ post_response = self.client.post(
+ reverse('yaksh:new_activation'),
+ data={'email': 'user@mail.com'}
+ )
+ self.assertEqual(post_response.status_code, 200)
+ self.assertFalse(post_response.context['success'])
+ self.assertTemplateUsed(get_response, 'yaksh/activation_status.html')
+
def test_edit_profile_post(self):
"""
POST request to edit_profile view should update the user's profile
@@ -3325,6 +3333,33 @@ class TestGrader(TestCase):
self.assertTrue('details' in response.context)
self.assertTemplateUsed(response, 'yaksh/regrade.html')
+ # When
+ response = self.client.get(
+ reverse('yaksh:regrade',
+ kwargs={'course_id': self.course.id,
+ 'answerpaper_id': self.answerpaper.id}),
+ follow=True)
+
+ # Then
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue('courses' in response.context)
+ self.assertTrue('details' in response.context)
+ self.assertTemplateUsed(response, 'yaksh/regrade.html')
+
+ # When
+ response = self.client.get(
+ reverse('yaksh:regrade',
+ kwargs={'course_id': self.course.id,
+ 'question_id': self.question.id,
+ 'questionpaper_id': self.question_paper.id}),
+ follow=True)
+
+ # Then
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue('courses' in response.context)
+ self.assertTrue('details' in response.context)
+ self.assertTemplateUsed(response, 'yaksh/regrade.html')
+
def test_regrade_denies_moderator_not_in_course(self):
# Given
self.client.login(
@@ -4119,6 +4154,37 @@ class TestShowQuestions(TestCase):
self.assertEqual(response.get('Content-Disposition'),
'attachment; filename="questions_dump.yaml"')
+ def test_delete_questions(self):
+ """ Test to check if questions are set to not active when deleted """
+ self.client.login(
+ username=self.user.username,
+ password=self.user_plaintext_pass
+ )
+ response = self.client.post(
+ reverse('yaksh:show_questions'),
+ data={'question': [self.question.id],
+ 'delete': 'delete'}
+ )
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'yaksh/showquestions.html')
+ updated_que = Question.objects.get(id=self.question.id)
+ self.assertFalse(updated_que.active)
+
+ def test_search_tags(self):
+ """ Test to check if questions are obtained with tags """
+ self.client.login(
+ username=self.user.username,
+ password=self.user_plaintext_pass
+ )
+ self.question.tags.add('code')
+ response = self.client.post(
+ reverse('yaksh:show_questions'),
+ data={'question_tags': ['code']}
+ )
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'yaksh/showquestions.html')
+ self.assertEqual(response.context['questions'][0], self.question)
+
class TestShowStatistics(TestCase):
def setUp(self):
@@ -4377,6 +4443,16 @@ class TestQuestionPaper(TestCase):
self.learning_module.learning_unit.add(self.learning_unit.id)
self.course.learning_module.add(self.learning_module)
+ # Questions for random set
+ self.random_que1 = Question.objects.create(
+ summary="Random 1", description="Test Random 1",
+ points=1.0, language="python", type="code", user=self.user
+ )
+ self.random_que2 = Question.objects.create(
+ summary="Random 2", description="Test Random 2",
+ points=1.0, language="python", type="code", user=self.user
+ )
+
# Mcq Question
self.question_mcq = Question.objects.create(
summary="Test_mcq_question", description="Test MCQ",
@@ -4843,6 +4919,23 @@ class TestQuestionPaper(TestCase):
self.questions_list)
self.assertEqual(response.context['qpaper'], self.question_paper)
+ response = self.client.post(
+ reverse('yaksh:designquestionpaper',
+ kwargs={"quiz_id": self.quiz.id,
+ "course_id": self.course.id,
+ "questionpaper_id": self.question_paper.id}),
+ data={'random_questions': [self.random_que1.id,
+ self.random_que2.id],
+ 'marks': ['1.0'], 'question_type': ['code'],
+ 'add-random': ['']}
+ )
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'yaksh/design_questionpaper.html')
+ random_set = response.context['random_sets'][0]
+ added_random_ques = random_set.questions.all()
+ self.assertIn(self.random_que1, added_random_ques)
+ self.assertIn(self.random_que2, added_random_ques)
+
class TestLearningModule(TestCase):
def setUp(self):
diff --git a/yaksh/views.py b/yaksh/views.py
index 8983070..8a0ab90 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -28,18 +28,15 @@ import re
# Local imports.
from yaksh.code_server import get_result as get_result_from_code_server
from yaksh.models import (
- Answer, AnswerPaper, AssignmentUpload, Course, FileUpload, FloatTestCase,
- HookTestCase, IntegerTestCase, McqTestCase, Profile,
- QuestionPaper, QuestionSet, Quiz, Question, StandardTestCase,
- StdIOBasedTestCase, StringTestCase, TestCase, User,
- get_model_class, FIXTURES_DIR_PATH, Lesson, LessonFile,
- LearningUnit, LearningModule,
+ Answer, AnswerPaper, AssignmentUpload, Course, FileUpload, Profile,
+ QuestionPaper, QuestionSet, Quiz, Question, TestCase, User,
+ FIXTURES_DIR_PATH, Lesson, LessonFile, LearningUnit, LearningModule,
CourseStatus
)
from yaksh.forms import (
UserRegisterForm, UserLoginForm, QuizForm, QuestionForm,
- RandomQuestionForm, QuestionFilterForm, CourseForm, ProfileForm,
- UploadFileForm, get_object_form, FileForm, QuestionPaperForm, LessonForm,
+ QuestionFilterForm, CourseForm, ProfileForm,
+ UploadFileForm, FileForm, QuestionPaperForm, LessonForm,
LessonFileForm, LearningModuleForm, ExerciseForm
)
from yaksh.settings import SERVER_POOL_PORT, SERVER_HOST_NAME
@@ -113,7 +110,6 @@ def user_register(request):
if request.method == "POST":
form = UserRegisterForm(request.POST)
if form.is_valid():
- data = form.cleaned_data
u_name, pwd, user_email, key = form.save()
new_user = authenticate(username=u_name, password=pwd)
login(request, new_user)
@@ -558,7 +554,6 @@ def show_question(request, question, paper, error_message=None,
notification=None, course_id=None, module_id=None,
previous_question=None):
"""Show a question if possible."""
- user = request.user
quiz = paper.question_paper.quiz
quiz_type = 'Exam'
can_skip = False
@@ -635,7 +630,6 @@ def show_question(request, question, paper, error_message=None,
@email_verified
def skip(request, q_id, next_q=None, attempt_num=None, questionpaper_id=None,
course_id=None, module_id=None):
- user = request.user
paper = get_object_or_404(
AnswerPaper, user=request.user, attempt_number=attempt_num,
question_paper=questionpaper_id, course_id=course_id
@@ -1310,13 +1304,11 @@ def design_questionpaper(request, quiz_id, questionpaper_id=None,
qpaper_form = QuestionPaperForm(instance=question_paper)
if request.method == 'POST':
-
filter_form = QuestionFilterForm(request.POST, user=user)
qpaper_form = QuestionPaperForm(request.POST, instance=question_paper)
question_type = request.POST.get('question_type', None)
marks = request.POST.get('marks', None)
state = request.POST.get('is_active', None)
-
if 'add-fixed' in request.POST:
question_ids = request.POST.get('checked_ques', None)
if question_paper.fixed_question_order:
@@ -1350,8 +1342,8 @@ def design_questionpaper(request, quiz_id, questionpaper_id=None,
random_set = QuestionSet(marks=marks,
num_questions=num_of_questions)
random_set.save()
- for question in Question.objects.filter(id__in=question_ids):
- random_set.questions.add(question)
+ random_ques = Question.objects.filter(id__in=question_ids)
+ random_set.questions.add(*random_ques)
question_paper.random_questions.add(random_set)
if 'remove-random' in request.POST:
@@ -2011,7 +2003,9 @@ def new_activation(request, email=None):
context['success'] = False
context['msg'] = "Your account is not verified. \
Please verify your account"
- return render_to_response('yaksh/activation_status.html', context)
+ return my_render_to_response(
+ request, 'yaksh/activation_status.html', context
+ )
if not user.profile.is_email_verified:
user.profile.activation_key = generate_activation_key(user.username)