diff options
author | prathamesh | 2014-12-06 16:49:20 +0530 |
---|---|---|
committer | prathamesh | 2014-12-06 16:49:20 +0530 |
commit | 1035cb5d0230566501ea2b974611f9c5867325e9 (patch) | |
tree | d2fa849ff73cbee7d6f5c0cf6b4a70056599b2c9 | |
parent | 0d23702ac00aa9d3b9bdce3d8fbde5175ea4d468 (diff) | |
download | certificate-generator-1035cb5d0230566501ea2b974611f9c5867325e9.tar.gz certificate-generator-1035cb5d0230566501ea2b974611f9c5867325e9.tar.bz2 certificate-generator-1035cb5d0230566501ea2b974611f9c5867325e9.zip |
Feedback form added
-rw-r--r-- | certificate/forms.py | 18 | ||||
-rw-r--r-- | certificate/models.py | 24 | ||||
-rw-r--r-- | certificate/templates/download.html | 4 | ||||
-rw-r--r-- | certificate/templates/feedback.html | 26 | ||||
-rw-r--r-- | certificate/templates/verify.html | 2 | ||||
-rw-r--r-- | certificate/urls.py | 3 | ||||
-rw-r--r-- | certificate/views.py | 45 |
7 files changed, 117 insertions, 5 deletions
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 @@ </div> </div> </div> - <form class="col-lg-12" action="" method="post"> + <form class="col-lg-12" action="{% url 'certificate:download' %}" method="post"> {% csrf_token %} - {{ error }} + {{ message }} <div class="input-group" style="width:340px;text-align:center;margin:0 auto;"> <input style="width:450;" class="form-control input-lg" placeholder="Enter the email address you used for registration" type="text" id="email" name=email> <span class="input-group-btn"><button class="btn btn-lg btn-primary" type="submit">Get Certificate</button></span> 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 %} + <form action="{% url 'certificate:feedback' %}" method="post"> + <p>Please fill in the feedback form. This will greatly enable us to do better.</p> + {{ detail }} + {% csrf_token %} + <div style="padding-left:100px;text-align:left;" > + <div> + <table class="table"> + {{ form }} + </table> + {% for question in questions %} + <tr> + <label>Q{{ forloop.counter }}. {{ question.question }} <br> + <textarea class="form-control" cols="80" id="{{ question.id }}" name="{{ question.id }}"></textarea><br> + </tr> + {% endfor %} + </table> + <span><button class="btn btn-lg btn-primary" type="submit">Submit</button></span> + <span><a href="{% url 'certificate:download' %}" class="btn btn-lg btn-primary" >Skip</a></span> + </form> + <hr> +{% endblock %} + + diff --git a/certificate/templates/verify.html b/certificate/templates/verify.html index 8b215c7..ad7cab1 100644 --- a/certificate/templates/verify.html +++ b/certificate/templates/verify.html @@ -16,7 +16,7 @@ </div> <p>Enter the serial number you received while scanning the QR code on certificate.</p> <hr> - <form action="" method="post"> + <form action="{% url 'certificate:verify' %}" method="post"> {{ detail }} {% csrf_token %} <div class="input-group" style="width:340px;text-align:center;margin:0 auto;"> 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) |