sphinx_django/sphinxcomment/views.py
changeset 2 f5e18f8ed036
parent 0 54f784230511
child 3 de4a2ed2f34b
equal deleted inserted replaced
1:5574cfc2b28d 2:f5e18f8ed036
     2 from django.http import HttpResponse
     2 from django.http import HttpResponse
     3 from django.utils.simplejson import dumps 
     3 from django.utils.simplejson import dumps 
     4 from django.contrib.csrf.middleware import csrf_exempt
     4 from django.contrib.csrf.middleware import csrf_exempt
     5 import django.forms as forms
     5 import django.forms as forms
     6 from django.db import connection
     6 from django.db import connection
     7 from django.http import HttpResponse
     7 from django.http import HttpResponse,Http404
     8 from sphinxcomment.models import Comment, Element
     8 from sphinxcomment.models import Comment, Element
     9 from django.shortcuts import get_object_or_404, render_to_response
     9 from django.shortcuts import get_object_or_404, render_to_response
    10 from django.template import Context
    10 from django.template import Context
    11 from django.template.loader import get_template
    11 from django.template.loader import get_template
    12 from django.utils.simplejson import dumps 
    12 from django.utils.simplejson import dumps 
       
    13 
       
    14 
       
    15 placeholder_string = open('paragraph_id.py').read()
       
    16 exec placeholder_string
    13 
    17 
    14 def dump_queries():
    18 def dump_queries():
    15     # requires settings.DEBUG to be set to True in order to work
    19     # requires settings.DEBUG to be set to True in order to work
    16     if len(connection.queries) == 1:
    20     if len(connection.queries) == 1:
    17         print connection.queries
    21         print connection.queries
    22         for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
    26         for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
    23             print q
    27             print q
    24         print len(connection.queries)
    28         print len(connection.queries)
    25 
    29 
    26 class CommentForm(forms.Form):
    30 class CommentForm(forms.Form):
    27     id = forms.CharField(widget=forms.HiddenInput)
       
    28     name = forms.CharField(max_length=64)
    31     name = forms.CharField(max_length=64)
    29     url = forms.URLField(max_length=128, required=False)
    32     url = forms.URLField(max_length=128, required=False)
    30     comment = forms.CharField(widget=forms.Textarea(attrs={
    33     comment = forms.CharField(widget=forms.Textarea(attrs={
    31         'rows': 8, 'cols': 60
    34         'rows': 8, 'cols': 60
    32         }))
    35         }))
    33     remember = forms.BooleanField(initial=True, required=False)
    36     remember = forms.BooleanField(initial=True, required=False)
    34 
    37 
    35 def comments_by_chapter(chapter):
    38 def comments_by_chapter(chapter):
    36     objs = []
    39      objs = {}
    37     for c in Comment.objects.filter(element__chapter_name=chapter).order_by('date'):
    40 
    38         objs.append(c)
    41      try:
    39     return objs
    42          para_list=p_list[chapter]
       
    43 
       
    44          for paragraph_id in para_list:
       
    45            objs[paragraph_id]=[] 
       
    46 
       
    47      except:
       
    48          para_list=[]
       
    49 
       
    50      for paragraph_id in para_list:
       
    51          print chapter ,paragraph_id
       
    52          for c in Comment.objects.filter(element__chapter_name=chapter,element__paragraph_id=paragraph_id).order_by('date'):
       
    53 
       
    54              objs[paragraph_id].append(c)
       
    55 
       
    56              
       
    57      
       
    58      return objs
       
    59 
       
    60      
       
    61 
       
    62 
       
    63 
    40 
    64 
    41 def chapter(request):
    65 def chapter(request):
    42 #    template = get_template('comment.html')
    66     template = get_template('comment.html')
    43 #    resp = {}
    67     resp = {}
    44     # for elt, comments in comments_by_chapter(id).iteritems():
    68     for elt, comments in comments_by_chapter(chapter).iteritems():
    45     form = CommentForm(initial={
    69         print elt ,comments
    46             'id': 'elt',
    70         form = CommentForm(initial={
    47             'name': 'name'
    71             'paragraph_id': elt,
       
    72             'name': name
    48             })
    73             })
    49     resp['elt'] = template.render(Context({
    74         resp[elt] = template.render(Context({
    50             'id': 'elt',
    75             'paragraph_id': elt,
    51             'form': form,
    76             'form': form,
    52             'length': 5,
    77             'length': len(comments),
    53             'query': 'abcde',
    78             'query': comments,
    54             }))
    79             }))
    55     return HttpResponse(dumps(resp), mimetype='application/json')
    80     return HttpResponse(dumps(resp), mimetype='application/json')
    56 
    81 
    57 def chapter_count(request,chapter_name):
    82 def chapter_count(request,chapter_name):
    58     comment_count = comments_by_chapter(chapter_name)
    83     print chapter_name
       
    84     chapter_name=chapter_name.split('.')[0]
       
    85     comment_objs = comments_by_chapter(chapter_name)
    59     resp={}
    86     resp={}
    60     resp['count']=len(comment_count)
    87     temp_dict={}
       
    88     for elt, comments in comment_objs.iteritems():
       
    89         temp_dict[elt]=len(comments)
    61 
    90 
    62 
    91     resp['count']=temp_dict
       
    92       
       
    93     
       
    94     print resp
    63     return HttpResponse(dumps(resp), mimetype='application/json')
    95     return HttpResponse(dumps(resp), mimetype='application/json')
    64     
    96     
    65 def single(request, id, form=None, newid=None):
    97 def single(request,paragraph_id, form=None, newid=None):
    66     queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
    98     if paragraph_id[-1]=='/':
       
    99         paragraph_id=paragraph_id[:-1]
       
   100     queryset = Comment.objects.filter(element=paragraph_id)
       
   101     print paragraph_id 
    67     if form is None:
   102     if form is None:
    68         form = CommentForm(initial={
   103         form = CommentForm(initial={
    69             'id': id,
   104             'paragraph_id': paragraph_id,
    70             'name': request.session.get('name', ''),
   105             'name': request.session.get('name', ''),
    71             })
   106             })
    72     try:
   107     try:
    73         error = form.errors[0]
   108         error = form.errors[0]
    74     except:
   109     except:
    75         error = ''
   110         error = ''
       
   111     print form.errors
    76     return render_to_response('comment.html', {
   112     return render_to_response('comment.html', {
    77         'id': id,
   113         'paragraph_id': paragraph_id,
    78         'form': form,
   114         'form': form,
    79         'length': len(queryset),
   115         'length': len(queryset),
    80         'query': queryset,
   116         'query': queryset,
    81         'newid': newid or True,
   117         'newid': newid or True,
    82         'error': error,
   118         'error': error,
    83         })
   119         })
    84 
   120 
    85 def submit(request, id):
   121 
    86     element = get_object_or_404(Element, id=id)
   122 
       
   123 
       
   124 def submit(request, paragraph_id):
       
   125 
       
   126     try:
       
   127         element = get_object_or_404(Element, paragraph_id=paragraph_id)
       
   128     except Http404:
       
   129         #creating chapter name from paragraph_id surely there is a better way using the context but i do not know as yet
       
   130         chapter_id='_'.join(paragraph_id.split('_')[0:-1])
       
   131         chapter_name=chapter_id[-1::-1].replace('_','/',1)[-1::-1]
       
   132         element=Element(chapter_name=chapter_name,paragraph_id=paragraph_id)
       
   133         element.save()
       
   134     print element.chapter_name
    87     form = None
   135     form = None
    88     newid = None
   136     newid = None
       
   137     
    89     if request.method == 'POST':
   138     if request.method == 'POST':
    90         form = CommentForm(request.POST)
   139         form = CommentForm(request.POST)
       
   140         print form.errors
    91         if form.is_valid():
   141         if form.is_valid():
       
   142             print form.cleaned_data
    92             data = form.cleaned_data
   143             data = form.cleaned_data
    93             if data.get('remember'):
   144             if data.get('remember'):
    94                 request.session['name'] = data['name']
   145                 request.session['name'] = data['name']
    95                 request.session['url'] = data['url']
   146                 request.session['url'] = data['url']
    96             else:
   147             else:
    99             c = Comment(element=element,
   150             c = Comment(element=element,
   100                         comment=data['comment'],
   151                         comment=data['comment'],
   101                         submitter_name=data['name'],
   152                         submitter_name=data['name'],
   102                         submitter_url=data['url'],
   153                         submitter_url=data['url'],
   103                         ip=request.META.get('REMOTE_ADDR'))
   154                         ip=request.META.get('REMOTE_ADDR'))
       
   155             print c
   104             c.save()
   156             c.save()
   105             newid = c.id
   157            
   106             form = None
   158             form = None
   107     return single(request, id, form, newid)
   159     return single(request, paragraph_id, form,)
   108 
   160 
   109 def test(request):
   161 def test(request):
   110     print request
   162     print request
   111     string="<p>test comment</p>"
   163     string="<p>test comment</p>"
   112     return HttpResponse(dumps(string),mimetype="application/json")
   164     return HttpResponse(string,mimetype="text/plain")
   113     
   165     
   114        
   166        
   115 
   167 
   116 #return HttpResponse(dumps(string),mimetype="text/plain")
   168 #return HttpResponse(dumps(string),mimetype="text/plain")
   117 #test= csrf_exempt(test)
   169 #test= csrf_exempt(test)