summaryrefslogtreecommitdiff
path: root/yaksh/views.py
diff options
context:
space:
mode:
authoradityacp2017-03-08 15:31:03 +0530
committeradityacp2017-03-10 15:41:07 +0530
commitca3c488193a7321b0ed0986856c4e74feadc199c (patch)
treea24478e4953c4acf1d37db088b8143ff0a52226a /yaksh/views.py
parentb8d6116cd59f68888aca8f2acceecc9b85ebf7de (diff)
downloadonline_test-ca3c488193a7321b0ed0986856c4e74feadc199c.tar.gz
online_test-ca3c488193a7321b0ed0986856c4e74feadc199c.tar.bz2
online_test-ca3c488193a7321b0ed0986856c4e74feadc199c.zip
Change views and models
- Remove Fixed Question Model - Create a fixed question order attribute in models
Diffstat (limited to 'yaksh/views.py')
-rw-r--r--yaksh/views.py43
1 files changed, 28 insertions, 15 deletions
diff --git a/yaksh/views.py b/yaksh/views.py
index 9b6fc4e..2a93aff 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -25,8 +25,8 @@ import six
# Local imports.
from yaksh.models import get_model_class, Quiz, Question, QuestionPaper, QuestionSet, Course
from yaksh.models import Profile, Answer, AnswerPaper, User, TestCase, FileUpload,\
- has_profile, StandardTestCase, McqTestCase, StdIOBasedTestCase, HookTestCase,\
- FixedQuestions
+ has_profile, StandardTestCase, McqTestCase, StdIOBasedTestCase, HookTestCase
+
from yaksh.forms import UserRegisterForm, UserLoginForm, QuizForm,\
QuestionForm, RandomQuestionForm,\
QuestionFilterForm, CourseForm, ProfileForm, UploadFileForm,\
@@ -266,8 +266,7 @@ def show_all_questionpapers(request, questionpaper_id=None):
else:
qu_papers = QuestionPaper.objects.get(id=questionpaper_id)
quiz = qu_papers.quiz
- fixed_ques = FixedQuestions()
- fixed_questions = fixed_ques.get_fixed_questions(qu_papers)
+ fixed_questions = qu_papers.get_ordered_questions()
random_questions = qu_papers.random_questions.all()
context = {'quiz': quiz, 'fixed_questions': fixed_questions,
'random_questions': random_questions}
@@ -359,7 +358,8 @@ def start(request, questionpaper_id=None, attempt_num=None):
msg = 'Quiz not found, please contact your '\
'instructor/administrator.'
return complete(request, msg, attempt_num, questionpaper_id=None)
- if not quest_paper.fixed_questions.all() and not quest_paper.random_questions.all():
+ if not quest_paper.get_ordered_questions() and not \
+ quest_paper.random_questions.all():
msg = 'Quiz does not have Questions, please contact your '\
'instructor/administrator.'
return complete(request, msg, attempt_num, questionpaper_id=None)
@@ -807,9 +807,8 @@ def _remove_already_present(questionpaper_id, questions):
if questionpaper_id is None:
return questions
questionpaper = QuestionPaper.objects.get(pk=questionpaper_id)
- fixed_questions = FixedQuestions.objects.filter(
- questionpaper=questionpaper).values_list('question_id', flat=True)
- questions = questions.exclude(id__in=fixed_questions)
+ questions = questions.exclude(
+ id__in=questionpaper.fixed_questions.values_list('id', flat=True))
for random_set in questionpaper.random_questions.all():
questions = questions.exclude(
id__in=random_set.questions.values_list('id', flat=True))
@@ -827,7 +826,6 @@ def design_questionpaper(request, quiz_id, questionpaper_id=None):
questions = None
marks = None
state = None
- fixed_que = FixedQuestions()
if questionpaper_id is None:
question_paper = QuestionPaper.objects.get_or_create(quiz_id=quiz_id)[0]
else:
@@ -843,14 +841,29 @@ def design_questionpaper(request, quiz_id, questionpaper_id=None):
state = request.POST.get('is_active', None)
if 'add-fixed' in request.POST:
- question_ids = request.POST.get('checked_ques', None).split(',')
- for q_id in question_ids:
- que = Question.objects.get(id=q_id)
- fixed_que.add_fixed_questions(question_paper, que)
+ question_ids = request.POST.get('checked_ques', None)
+ if question_paper.fixed_question_order:
+ ques_order = question_paper.fixed_question_order.split(",") +\
+ question_ids.split(",")
+ questions_order = ",".join(ques_order)
+ else:
+ questions_order = question_ids
+ questions = Question.objects.filter(id__in=question_ids.split(','))
+ question_paper.fixed_question_order = questions_order
+ question_paper.save()
+ question_paper.fixed_questions.add(*questions)
if 'remove-fixed' in request.POST:
question_ids = request.POST.getlist('added-questions', None)
- fixed_que.remove_fixed_questions(question_ids)
+ que_order = question_paper.fixed_question_order.split(",")
+ for qid in question_ids:
+ que_order.remove(qid)
+ if que_order:
+ question_paper.fixed_question_order = ",".join(que_order)
+ else:
+ question_paper.fixed_question_order = ""
+ question_paper.save()
+ question_paper.fixed_questions.remove(*question_ids)
if 'add-random' in request.POST:
question_ids = request.POST.getlist('random_questions', None)
@@ -877,7 +890,7 @@ def design_questionpaper(request, quiz_id, questionpaper_id=None):
question_paper.update_total_marks()
question_paper.save()
random_sets = question_paper.random_questions.all()
- fixed_questions = fixed_que.get_fixed_questions(question_paper)
+ fixed_questions = question_paper.get_ordered_questions()
context = {'qpaper_form': qpaper_form, 'filter_form': filter_form, 'qpaper':
question_paper, 'questions': questions, 'fixed_questions': fixed_questions,
'state': state, 'random_sets': random_sets}