created the add feedback functionality
authornishanth
Mon, 19 Apr 2010 22:36:23 +0530
changeset 5 9a671f3eb24c
parent 4 e3b8a3ae3857
child 6 8929b82c1dbb
created the add feedback functionality
feedback/forms.py
feedback/views.py
settings.py
templates/base.html
templates/submit_feedback.html
urls.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']
--- 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})
+
--- 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',
 )
--- /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 @@
+<html>
+<head>
+<title>
+{% block title %}
+{% endblock %}
+</title>
+</head>
+<body>
+{% block content %}
+{% endblock %}
+</body>
+</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}}<br /> 
+		<form action="" method="post">
+		{{ form.as_p }}
+		<input type="submit" value="submit">
+		</form>
+	{% endif %}
+{% endblock %}
--- 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)
 )