sphinx_django/sphinxcomment/views.py
changeset 2 f5e18f8ed036
parent 0 54f784230511
child 3 de4a2ed2f34b
--- a/sphinx_django/sphinxcomment/views.py	Thu Sep 30 15:59:32 2010 +0530
+++ b/sphinx_django/sphinxcomment/views.py	Fri Oct 15 15:59:28 2010 +0530
@@ -4,13 +4,17 @@
 from django.contrib.csrf.middleware import csrf_exempt
 import django.forms as forms
 from django.db import connection
-from django.http import HttpResponse
+from django.http import HttpResponse,Http404
 from sphinxcomment.models import Comment, Element
 from django.shortcuts import get_object_or_404, render_to_response
 from django.template import Context
 from django.template.loader import get_template
 from django.utils.simplejson import dumps 
 
+
+placeholder_string = open('paragraph_id.py').read()
+exec placeholder_string
+
 def dump_queries():
     # requires settings.DEBUG to be set to True in order to work
     if len(connection.queries) == 1:
@@ -24,7 +28,6 @@
         print len(connection.queries)
 
 class CommentForm(forms.Form):
-    id = forms.CharField(widget=forms.HiddenInput)
     name = forms.CharField(max_length=64)
     url = forms.URLField(max_length=128, required=False)
     comment = forms.CharField(widget=forms.Textarea(attrs={
@@ -33,48 +36,81 @@
     remember = forms.BooleanField(initial=True, required=False)
 
 def comments_by_chapter(chapter):
-    objs = []
-    for c in Comment.objects.filter(element__chapter_name=chapter).order_by('date'):
-        objs.append(c)
-    return objs
+     objs = {}
+
+     try:
+         para_list=p_list[chapter]
+
+         for paragraph_id in para_list:
+           objs[paragraph_id]=[] 
+
+     except:
+         para_list=[]
+
+     for paragraph_id in para_list:
+         print chapter ,paragraph_id
+         for c in Comment.objects.filter(element__chapter_name=chapter,element__paragraph_id=paragraph_id).order_by('date'):
+
+             objs[paragraph_id].append(c)
+
+             
+     
+     return objs
+
+     
+
+
+
 
 def chapter(request):
-#    template = get_template('comment.html')
-#    resp = {}
-    # for elt, comments in comments_by_chapter(id).iteritems():
-    form = CommentForm(initial={
-            'id': 'elt',
-            'name': 'name'
+    template = get_template('comment.html')
+    resp = {}
+    for elt, comments in comments_by_chapter(chapter).iteritems():
+        print elt ,comments
+        form = CommentForm(initial={
+            'paragraph_id': elt,
+            'name': name
             })
-    resp['elt'] = template.render(Context({
-            'id': 'elt',
+        resp[elt] = template.render(Context({
+            'paragraph_id': elt,
             'form': form,
-            'length': 5,
-            'query': 'abcde',
+            'length': len(comments),
+            'query': comments,
             }))
     return HttpResponse(dumps(resp), mimetype='application/json')
 
 def chapter_count(request,chapter_name):
-    comment_count = comments_by_chapter(chapter_name)
+    print chapter_name
+    chapter_name=chapter_name.split('.')[0]
+    comment_objs = comments_by_chapter(chapter_name)
     resp={}
-    resp['count']=len(comment_count)
+    temp_dict={}
+    for elt, comments in comment_objs.iteritems():
+        temp_dict[elt]=len(comments)
 
-
+    resp['count']=temp_dict
+      
+    
+    print resp
     return HttpResponse(dumps(resp), mimetype='application/json')
     
-def single(request, id, form=None, newid=None):
-    queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
+def single(request,paragraph_id, form=None, newid=None):
+    if paragraph_id[-1]=='/':
+        paragraph_id=paragraph_id[:-1]
+    queryset = Comment.objects.filter(element=paragraph_id)
+    print paragraph_id 
     if form is None:
         form = CommentForm(initial={
-            'id': id,
+            'paragraph_id': paragraph_id,
             'name': request.session.get('name', ''),
             })
     try:
         error = form.errors[0]
     except:
         error = ''
+    print form.errors
     return render_to_response('comment.html', {
-        'id': id,
+        'paragraph_id': paragraph_id,
         'form': form,
         'length': len(queryset),
         'query': queryset,
@@ -82,13 +118,28 @@
         'error': error,
         })
 
-def submit(request, id):
-    element = get_object_or_404(Element, id=id)
+
+
+
+def submit(request, paragraph_id):
+
+    try:
+        element = get_object_or_404(Element, paragraph_id=paragraph_id)
+    except Http404:
+        #creating chapter name from paragraph_id surely there is a better way using the context but i do not know as yet
+        chapter_id='_'.join(paragraph_id.split('_')[0:-1])
+        chapter_name=chapter_id[-1::-1].replace('_','/',1)[-1::-1]
+        element=Element(chapter_name=chapter_name,paragraph_id=paragraph_id)
+        element.save()
+    print element.chapter_name
     form = None
     newid = None
+    
     if request.method == 'POST':
         form = CommentForm(request.POST)
+        print form.errors
         if form.is_valid():
+            print form.cleaned_data
             data = form.cleaned_data
             if data.get('remember'):
                 request.session['name'] = data['name']
@@ -101,15 +152,16 @@
                         submitter_name=data['name'],
                         submitter_url=data['url'],
                         ip=request.META.get('REMOTE_ADDR'))
+            print c
             c.save()
-            newid = c.id
+           
             form = None
-    return single(request, id, form, newid)
+    return single(request, paragraph_id, form,)
 
 def test(request):
     print request
     string="<p>test comment</p>"
-    return HttpResponse(dumps(string),mimetype="application/json")
+    return HttpResponse(string,mimetype="text/plain")