# HG changeset patch # User nishanth # Date 1271696783 -19800 # Node ID 9a671f3eb24cc114ebf281023355949bb342f01d # Parent e3b8a3ae3857a2a35f3b5dfe5df80698023ccd7e created the add feedback functionality diff -r e3b8a3ae3857 -r 9a671f3eb24c feedback/forms.py --- a/feedback/forms.py Mon Apr 19 22:06:51 2010 +0530 +++ b/feedback/forms.py Mon Apr 19 22:36:23 2010 +0530 @@ -1,6 +1,6 @@ from django import forms -from ws_app.feedback.models import Feedback +from offline.feedback.models import Feedback class FeedbackForm(forms.ModelForm): """ A form to collect the feedback. @@ -8,7 +8,7 @@ class Meta: model = Feedback - exclude = [ 'event', 'day'] + exclude = [ 'event', 'day', 'user_ip'] def clean_comments(self): comments = self.cleaned_data['comments'] diff -r e3b8a3ae3857 -r 9a671f3eb24c feedback/views.py --- a/feedback/views.py Mon Apr 19 22:06:51 2010 +0530 +++ b/feedback/views.py Mon Apr 19 22:36:23 2010 +0530 @@ -1,1 +1,54 @@ -# Create your views here. +from django.shortcuts import render_to_response +from django.http import Http404 + +from offline.event.models import Event + +from offline.feedback.models import Feedback +from offline.feedback.forms import FeedbackForm + + +def submit_feedback(request): + + """ see if the ip address has already submitted a feedback. + if not, collect the feedback. + """ + + try: + event = Event.objects.all()[0] + except IndexError: + raise Http404 + + if event.feedback_status == "0": + raise Http404 + else: + day = event.feedback_status + + ip = request.META['REMOTE_ADDR'] + + try: + Feedback.objects.get(event=event,day=day,user_ip=ip) + return render_to_response('submit_feedback.html', {'submitted':True, 'event':event}) + except Feedback.DoesNotExist: + new_feedback = Feedback(event=event,day=day,user_ip=ip) + + if request.method == "POST": + form = FeedbackForm(request.POST) + if form.is_valid(): + data = form.cleaned_data + new_feedback.topics = data['topics'] + new_feedback.depth = data['depth'] + new_feedback.methodology = data['methodology'] + new_feedback.pace = data['pace'] + new_feedback.applicability = data['applicability'] + new_feedback.problems = data['problems'] + new_feedback.exercises = data['exercises'] + new_feedback.comments = data['comments'] + new_feedback.save() + + return render_to_response('submit_feedback.html', {'submitted':True, 'event':event}) + else: + return render_to_response('submit_feedback.html',{ 'form':form, 'event':event}) + else: + form = FeedbackForm() + return render_to_response('submit_feedback.html',{'form':form, 'event':event}) + diff -r e3b8a3ae3857 -r 9a671f3eb24c settings.py --- a/settings.py Mon Apr 19 22:06:51 2010 +0530 +++ b/settings.py Mon Apr 19 22:36:23 2010 +0530 @@ -69,6 +69,7 @@ # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. + './templates', ) INSTALLED_APPS = ( @@ -76,4 +77,6 @@ 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', + 'offline.event', + 'offline.feedback', ) diff -r e3b8a3ae3857 -r 9a671f3eb24c templates/base.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/base.html Mon Apr 19 22:36:23 2010 +0530 @@ -0,0 +1,12 @@ + + + +{% block title %} +{% endblock %} + + + +{% block content %} +{% endblock %} + + diff -r e3b8a3ae3857 -r 9a671f3eb24c templates/submit_feedback.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/submit_feedback.html Mon Apr 19 22:36:23 2010 +0530 @@ -0,0 +1,12 @@ +{% extends "base.html" %} +{% block content %} + {% if submitted %} + Your feedback has been successfully submitted. + {% else %} + Submit feedback for day{{event.feedback_status}} of {{event.title}}
+
+ {{ form.as_p }} + +
+ {% endif %} +{% endblock %} diff -r e3b8a3ae3857 -r 9a671f3eb24c urls.py --- a/urls.py Mon Apr 19 22:06:51 2010 +0530 +++ b/urls.py Mon Apr 19 22:36:23 2010 +0530 @@ -1,5 +1,7 @@ from django.conf.urls.defaults import * +from offline.feedback.views import submit_feedback + # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() @@ -14,4 +16,5 @@ # Uncomment the next line to enable the admin: # (r'^admin/', include(admin.site.urls)), + (r'^feedback/submit', submit_feedback) )