summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorprathamesh2014-12-06 16:49:20 +0530
committerprathamesh2014-12-06 16:49:20 +0530
commit1035cb5d0230566501ea2b974611f9c5867325e9 (patch)
treed2fa849ff73cbee7d6f5c0cf6b4a70056599b2c9
parent0d23702ac00aa9d3b9bdce3d8fbde5175ea4d468 (diff)
downloadcertificate-generator-1035cb5d0230566501ea2b974611f9c5867325e9.tar.gz
certificate-generator-1035cb5d0230566501ea2b974611f9c5867325e9.tar.bz2
certificate-generator-1035cb5d0230566501ea2b974611f9c5867325e9.zip
Feedback form added
-rw-r--r--certificate/forms.py18
-rw-r--r--certificate/models.py24
-rw-r--r--certificate/templates/download.html4
-rw-r--r--certificate/templates/feedback.html26
-rw-r--r--certificate/templates/verify.html2
-rw-r--r--certificate/urls.py3
-rw-r--r--certificate/views.py45
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)