def question_form_update(request, evalpk, parentpk, qformpk): evaluation, parent, questions = get_question_structure(evalpk, parentpk) qform = get_object_or_404(QuestionForm, pk=qformpk) qfclass = QuestionFormBuilder(qform, qform.ftype) if request.method == "POST": fparams = qfclass.get_admin_params_form()(request.POST) fvalues = qfclass.get_admin_values_formset()(request.POST) if fparams.is_valid() and fvalues.is_valid(): qfclass.admin_params_form_save(fparams) qfclass.admin_values_formset_save(fvalues) return HttpResponseRedirect( reverse('question-details', kwargs={'evalpk': evaluation.pk, 'parentpk': parent.pk})) else: fparams = qfclass.get_admin_params_form()() fvalues = qfclass.get_admin_values_formset()() return render(request, 'evaluation/questionform_form.html', {'fparams': fparams, 'fvalues': fvalues, 'evaluation': evaluation, 'question': parent, 'questions': questions})
def question_form_create(request, evalpk, parentpk, ftype): evaluation, parent, questions = get_question_structure(evalpk, parentpk) qfclass = QuestionFormBuilder(None, ftype) if request.method == "POST": fparams = qfclass.get_admin_params_form()(request.POST, prefix="fparams") fvalues = qfclass.get_admin_values_formset()(request.POST, initial=[], prefix="fvalues") form = QuestionFormForm(request.POST, prefix="qform") v1 = form.is_valid() v2 = fparams.is_valid() v3 = fvalues.is_valid() if v1 and v2 and v3: qform = form.save(False) qform.question = parent qform.ftype = ftype qform.save() qfclass.set_parent(qform) qfclass.admin_params_form_save(fparams) qfclass.admin_values_formset_save(fvalues) return HttpResponseRedirect( reverse('question-details', kwargs={'evalpk': evaluation.pk, 'parentpk': parent.pk})) else: form = QuestionFormForm(prefix="qform") fparams = qfclass.get_admin_params_form()(prefix="fparams") fvalues = qfclass.get_admin_values_formset()(prefix="fvalues") return render(request, 'evaluation/questionform_form.html', {'form': form, 'fparams': fparams, 'fvalues': fvalues, 'evaluation': evaluation, 'question': parent, 'questions': questions})