From 1035cb5d0230566501ea2b974611f9c5867325e9 Mon Sep 17 00:00:00 2001 From: prathamesh Date: Sat, 6 Dec 2014 16:49:20 +0530 Subject: Feedback form added --- certificate/forms.py | 18 +++++++++++++++ certificate/models.py | 24 ++++++++++++++++++++ certificate/templates/download.html | 4 ++-- certificate/templates/feedback.html | 26 +++++++++++++++++++++ certificate/templates/verify.html | 2 +- certificate/urls.py | 3 ++- certificate/views.py | 45 ++++++++++++++++++++++++++++++++++++- 7 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 certificate/forms.py create mode 100644 certificate/templates/feedback.html diff --git a/certificate/forms.py b/certificate/forms.py new file mode 100644 index 0000000..321ffba --- /dev/null +++ b/certificate/forms.py @@ -0,0 +1,18 @@ +from django import forms +from certificate.models import FeedBack + +class FeedBackForm(forms.Form): + name = forms.CharField(max_length=30) + email = forms.EmailField() + phone = forms.CharField(max_length=15) + organisation = forms.CharField(max_length=30) + department = forms.CharField\ + (max_length=64) + role = forms.CharField\ + (max_length=64) + address = forms.CharField(max_length=256, widget=forms.Textarea(attrs={'rows':1})) + city = forms.CharField(max_length=30) + pincode_number = forms.CharField\ + (max_length=30) + state = forms.CharField\ + (max_length=128) diff --git a/certificate/models.py b/certificate/models.py index bc531b0..0737caf 100644 --- a/certificate/models.py +++ b/certificate/models.py @@ -65,3 +65,27 @@ class Scilab_workshop(models.Model): workshops = models.CharField(max_length=300) purpose = models.CharField(max_length=10, default='SLC') attendance = models.BooleanField(default=False) + +class FeedBack(models.Model): + ''' Feed back form for the event ''' + name = models.CharField(max_length=100) + email = models.CharField(max_length=100) + phone = models.CharField(max_length=20) + institution = models.CharField(max_length=100) + role = models.CharField(max_length=100) + address = models.CharField(max_length=100) + city = models.CharField(max_length=50) + pin_number = models.CharField(max_length=10) + state = models.CharField(max_length=50) + purpose = models.CharField(max_length=10, default='SLC') + submitted = models.BooleanField(default=False) + answer = models.ManyToManyField('Answer') + + +class Question(models.Model): + question = models.CharField(max_length=500) + purpose = models.CharField(max_length=10, default='SLC') + +class Answer(models.Model): + question = models.ForeignKey(Question) + answer = models.CharField(max_length=1000) diff --git a/certificate/templates/download.html b/certificate/templates/download.html index e23695e..32dab33 100644 --- a/certificate/templates/download.html +++ b/certificate/templates/download.html @@ -14,9 +14,9 @@ -
+ {% csrf_token %} - {{ error }} + {{ message }}
diff --git a/certificate/templates/feedback.html b/certificate/templates/feedback.html new file mode 100644 index 0000000..c5a40ac --- /dev/null +++ b/certificate/templates/feedback.html @@ -0,0 +1,26 @@ +{% extends 'base.html' %} + +{% block content %} + +

Please fill in the feedback form. This will greatly enable us to do better.

+ {{ detail }} + {% csrf_token %} +
+
+ + {{ form }} +
+ {% for question in questions %} + +

Enter the serial number you received while scanning the QR code on certificate.


-
+ {{ detail }} {% csrf_token %}
diff --git a/certificate/urls.py b/certificate/urls.py index 5e4827f..a536f4a 100644 --- a/certificate/urls.py +++ b/certificate/urls.py @@ -8,7 +8,8 @@ urlpatterns = patterns('', # url(r'^$', 'fossee_project.views.home', name='home'), # url(r'^blog/', include('blog.urls')), - url(r'^$', 'certificate.views.download', name='download'), + url(r'^$', 'certificate.views.feedback', name='feedback'), url(r'^download/$', 'certificate.views.download', name='download'), url(r'^verify/$', 'certificate.views.verify', name='verify'), + url(r'^feedback/$', 'certificate.views.feedback', name='feedback'), ) diff --git a/certificate/views.py b/certificate/views.py index 2539c4f..5a532e2 100644 --- a/certificate/views.py +++ b/certificate/views.py @@ -2,10 +2,11 @@ from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext -from certificate.models import Scilab_participant, Certificate, Event, Scilab_speaker, Scilab_workshop +from certificate.models import Scilab_participant, Certificate, Event, Scilab_speaker, Scilab_workshop, Question, Answer, FeedBack import subprocess import os from string import Template +from certificate.forms import FeedBackForm # Create your views here. def download(request): @@ -86,6 +87,7 @@ def download(request): _clean_certificate_certificate(certificate_path, file_name) context['error'] = True return render_to_response('download.html', context, ci) + context['message'] = 'You can download the certificate' return render_to_response('download.html', context, ci) def verify(request): @@ -198,3 +200,44 @@ def _make_certificate_certificate(path, type, file_name): err = process.communicate()[1] return process.returncode, err +def feedback(request): + context = {} + ci = RequestContext(request) + form = FeedBackForm() + questions = Question.objects.filter(purpose='SLC') + if request.method == 'POST': + form = FeedBackForm(request.POST) + if form.is_valid(): + data = form.cleaned_data + try: + FeedBack.objects.get(email=data['email'].strip(), purpose='SLC') + context['message'] = 'You have already submitted the feedback. You can download the certificate' + return render_to_response('download.html', context, ci) + except FeedBack.DoesNotExist: + feedback = FeedBack() + feedback.name = data['name'].strip() + feedback.email = data['email'].strip() + feedback.phone = data['phone'].strip() + feedback.institution = data['organisation'].strip() + feedback.role = data['role'].strip() + feedback.address = data['address'].strip() + feedback.city = data['city'].strip() + feedback.pin_number = data['pincode_number'].strip() + feedback.state = data['state'].strip() + feedback.submitted = True + feedback.save() + for question in questions: + answered = request.POST.get('{0}'.format(question.id), None) + answer = Answer() + answer.question = question + answer.answer = answered.strip() + answer.save() + feedback.answer.add(answer) + feedback.save() + context['message'] = 'Thank you for the feedback. You can download the certificate' + return render_to_response('download.html', context, ci) + + context['form'] = form + context['questions'] = questions + + return render_to_response('feedback.html', context, ci) -- cgit