From aed9130fbe9ee2ce4a80e117a5a89de4ae36f1cd Mon Sep 17 00:00:00 2001 From: yomguy Date: Thu, 20 Dec 2012 00:05:03 +0100 Subject: [PATCH] working evaluation forms --- teleforma/forms.py | 1 - .../templates/teleforma/evaluation_form.html | 19 +++++++ .../teleforma/inc/evaluation_form.html | 19 +++++++ teleforma/urls.py | 2 +- teleforma/views/pro.py | 57 +++++++++++++++---- 5 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 teleforma/templates/teleforma/evaluation_form.html create mode 100644 teleforma/templates/teleforma/inc/evaluation_form.html diff --git a/teleforma/forms.py b/teleforma/forms.py index 64ce4562..e331c2df 100644 --- a/teleforma/forms.py +++ b/teleforma/forms.py @@ -30,5 +30,4 @@ class AnswerForm(ModelForm): hidden_fields = ['status'] -# AnswerFormset = inlineformset_factory(QuestionForm, Answer, extra=1) diff --git a/teleforma/templates/teleforma/evaluation_form.html b/teleforma/templates/teleforma/evaluation_form.html new file mode 100644 index 00000000..f13c7615 --- /dev/null +++ b/teleforma/templates/teleforma/evaluation_form.html @@ -0,0 +1,19 @@ +{% extends "teleforma/seminar_detail.html" %} +{% load teleforma_tags %} +{% load forms_builder_tags %} +{% load i18n %} + +{% block course_content %} + +
+
+

{% trans "Step 6 : evaluate the seminar" %}

+
+
+ {% render_built_form form %} +
+
+ + +{% endblock course_content %} + diff --git a/teleforma/templates/teleforma/inc/evaluation_form.html b/teleforma/templates/teleforma/inc/evaluation_form.html new file mode 100644 index 00000000..76f54bcc --- /dev/null +++ b/teleforma/templates/teleforma/inc/evaluation_form.html @@ -0,0 +1,19 @@ +{% load teleforma_tags %} +{% load forms_builder_tags %} +{% load i18n %} + + +
+
+

{{ title }}

+
+ + + + + + + +
{{ form.title }}
+ +
\ No newline at end of file diff --git a/teleforma/urls.py b/teleforma/urls.py index eb6e1c85..8c001f81 100644 --- a/teleforma/urls.py +++ b/teleforma/urls.py @@ -101,7 +101,7 @@ urlpatterns = patterns('', # Evaluations url(r'^forms/', include('forms_builder.forms.urls')), - url(r'^desk/seminars/(?P.*)/form/$', EvaluationView.as_view(), name="teleforma-seminar-form"), + url(r'^desk/seminars/(?P.*)/form/$', evaluation_form_detail, name="teleforma-seminar-form"), # Postman url(r'^messages/', include('postman.urls')), diff --git a/teleforma/views/pro.py b/teleforma/views/pro.py index bf60d995..e4a12804 100644 --- a/teleforma/views/pro.py +++ b/teleforma/views/pro.py @@ -36,6 +36,11 @@ from teleforma.views.core import * from django.utils.translation import ugettext_lazy as _ +from forms_builder.forms.forms import FormForForm +from forms_builder.forms.models import Form +from forms_builder.forms.signals import form_invalid, form_valid + + def get_seminars(user): seminars = [] @@ -341,20 +346,52 @@ class AjaxableResponseMixin(object): return super(AjaxableResponseMixin, self).form_valid(form) +# class EvaluationView(DetailView): -class EvaluationView(DetailView): +# model = Seminar +# template_name='teleforma/evaluation_form.html' - model = Seminar - template_name='teleforma/evaluation_form.html' +# def get_context_data(self, **kwargs): +# context = super(EvaluationView, self).get_context_data(**kwargs) +# context['all_seminars'] = get_seminars(self.request.user) +# context['total_progress'] = total_progress(self.request.user) +# context['form'] = self.get_object().form +# context['seminar_progress'] = seminar_progress(self.request.user, self.get_object()) +# return context + + +def evaluation_form_detail(request, pk, template='teleforma/evaluation_form.html'): + """ + Display a built form and handle submission. + """ + context = {} + seminar = Seminar.objects.get(pk=pk) + published = Form.objects.published(for_user=request.user) + form = seminar.form + if form.login_required and not request.user.is_authenticated(): + return redirect("%s?%s=%s" % (settings.LOGIN_URL, REDIRECT_FIELD_NAME, + urlquote(request.get_full_path()))) + request_context = RequestContext(request) + args = (form, request_context, request.POST or None, request.FILES or None) + form_for_form = FormForForm(*args) + if request.method == "POST": + if not form_for_form.is_valid(): + form_invalid.send(sender=request, form=form_for_form) + else: + entry = form_for_form.save() + form_valid.send(sender=request, form=form_for_form, entry=entry) + return redirect('teleforma-seminar-detail', seminar.id) + + context['seminar'] = seminar + context['all_seminars'] = get_seminars(request.user) + context['total_progress'] = total_progress(request.user) + context['form'] = form + context['seminar_progress'] = seminar_progress(request.user, seminar) + + return render_to_response(template, context, request_context) - def get_context_data(self, **kwargs): - context = super(EvaluationView, self).get_context_data(**kwargs) - context['all_seminars'] = get_seminars(self.request.user) - context['total_progress'] = total_progress(self.request.user) - context['form'] = self.get_object().form - context['seminar_progress'] = seminar_progress(self.request.user, self.get_object()) - return context +# Testimonials def fetch_resources(uri, rel): """ -- 2.39.5