def edit_question(request, question_id=None): """To add a new question in the database. Create a new question and store it.""" user = request.user ci = RequestContext(request) if not question_id: raise Http404('No Question Found') question_instance = Question.objects.get(id=question_id) if request.method == "POST" and 'save_question' in request.POST: question_form = QuestionForm(request.POST, instance=question_instance) if question_form.is_valid(): new_question = question_form.save(commit=False) test_case_type = question_form.cleaned_data.get('test_case_type') test_case_form_class = get_object_form(model=test_case_type, exclude_fields=['question']) test_case_model_class = get_model_class(test_case_type) TestCaseInlineFormSet = inlineformset_factory(Question, test_case_model_class, form=test_case_form_class, extra=1) test_case_formset = TestCaseInlineFormSet(request.POST, request.FILES, instance=new_question) if test_case_formset.is_valid(): new_question.save() test_case_formset.save() return my_redirect("/exam/manage/addquestion/{0}".format(new_question.id)) else: test_case_type = question_form.cleaned_data.get('test_case_type') test_case_form_class = get_object_form(model=test_case_type, exclude_fields=['question']) test_case_model_class = get_model_class(test_case_type) TestCaseInlineFormSet = inlineformset_factory(Question, test_case_model_class, form=test_case_form_class, extra=1) test_case_formset = TestCaseInlineFormSet(request.POST, request.FILES, instance=question_instance) return my_render_to_response('yaksh/add_question.html', {'form': question_form, 'test_case_formset': test_case_formset, 'question_id': question_id}, context_instance=ci) else: question_form = QuestionForm(instance=question_instance) test_case_type = question_instance.test_case_type test_case_form_class = get_object_form(model=test_case_type, exclude_fields=['question']) test_case_model_class = get_model_class(test_case_type) TestCaseInlineFormSet = inlineformset_factory(Question, test_case_model_class, form=test_case_form_class, extra=1) test_case_formset = TestCaseInlineFormSet(instance=question_instance) return my_render_to_response('yaksh/add_question.html', {'form': question_form, 'test_case_formset': test_case_formset, 'question_id': question_id}, context_instance=ci)
def add_question(request): """To add a new question in the database. Create a new question and store it.""" user = request.user ci = RequestContext(request) if request.method == "POST" and 'save_question' in request.POST: question_form = QuestionForm(request.POST) if question_form.is_valid(): new_question = question_form.save(commit=False) new_question.user = user new_question.save() return my_redirect("/exam/manage/addquestion/{0}".format(new_question.id)) else: return my_render_to_response('yaksh/add_question.html', {'form': question_form}, context_instance=ci) else: question_form = QuestionForm() return my_render_to_response('yaksh/add_question.html', {'form': question_form}, context_instance=ci)
def add_question(request, question_id=None): """To add a new question in the database. Create a new question and store it.""" def add_or_delete_test_form(post_request, instance): request_copy = post_request.copy() if 'add_test' in post_request: request_copy['test-TOTAL_FORMS'] = int(request_copy['test-TOTAL_FORMS']) + 1 elif 'delete_test' in post_request: request_copy['test-TOTAL_FORMS'] = int(request_copy['test-TOTAL_FORMS']) - 1 test_case_formset = TestCaseFormSet(request_copy, prefix='test', instance=instance) return test_case_formset user = request.user ci = RequestContext(request) if not user.is_authenticated() or not is_moderator(user): raise Http404('You are not allowed to view this page!') if request.method == "POST": form = QuestionForm(request.POST) if form.is_valid(): if question_id is None: test_case_formset = add_or_delete_test_form(request.POST, form.save(commit=False)) if 'save_question' in request.POST: qtn = form.save(commit=False) test_case_formset = TestCaseFormSet(request.POST, prefix='test', instance=qtn) form.save() question = Question.objects.order_by("-id")[0] if test_case_formset.is_valid(): test_case_formset.save() else: return my_render_to_response('yaksh/add_question.html', {'form': form, 'formset': test_case_formset}, context_instance=ci) return my_redirect("/exam/manage/questions") return my_render_to_response('yaksh/add_question.html', {'form': form, 'formset': test_case_formset}, context_instance=ci) else: d = Question.objects.get(id=question_id) form = QuestionForm(request.POST, instance=d) test_case_formset = add_or_delete_test_form(request.POST, d) if 'save_question' in request.POST: qtn = form.save(commit=False) test_case_formset = TestCaseFormSet(request.POST, prefix='test', instance=qtn) form.save() question = Question.objects.get(id=question_id) if test_case_formset.is_valid(): test_case_formset.save() return my_redirect("/exam/manage/questions") return my_render_to_response('yaksh/add_question.html', {'form': form, 'formset': test_case_formset}, context_instance=ci) else: test_case_formset = TestCaseFormSet(prefix='test', instance=Question()) return my_render_to_response('yaksh/add_question.html', {'form': form, 'formset': test_case_formset}, context_instance=ci) else: if question_id is None: form = QuestionForm() test_case_formset = TestCaseFormSet(prefix='test', instance=Question()) return my_render_to_response('yaksh/add_question.html', {'form': form, 'formset': test_case_formset}, context_instance=ci) else: d = Question.objects.get(id=question_id) form = QuestionForm(instance=d) test_case_formset = TestCaseFormSet(prefix='test', instance=d) return my_render_to_response('yaksh/add_question.html', {'form': form, 'formset': test_case_formset}, context_instance=ci)