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 
    13 
    14 # def dump_queries():
    14 
    15 #     # requires settings.DEBUG to be set to True in order to work
    15 placeholder_string = open('paragraph_id.py').read()
    16 #     if len(connection.queries) == 1:
    16 exec placeholder_string
    17 #         print connection.queries
    17 
    18 #     else:
    18 def dump_queries():
    19 #         qs = {}
    19     # requires settings.DEBUG to be set to True in order to work
    20 #         for q in connection.queries:
    20     if len(connection.queries) == 1:
    21 #             qs[q['sql']] = qs.setdefault(q['sql'], 0) + 1
    21         print connection.queries
    22 #         for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
    22     else:
    23 #             print q
    23         qs = {}
    24 #         print len(connection.queries)
    24         for q in connection.queries:
       
    25             qs[q['sql']] = qs.setdefault(q['sql'], 0) + 1
       
    26         for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
       
    27             print q
       
    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=id, hidden=False).order_by('date'):
    40 
    38         objs.setdefault(c.element_id, []).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          
       
    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      return objs
       
    57 
       
    58      
       
    59 
       
    60 
       
    61 
    40 
    62 
    41 def chapter(request):
    63 def chapter(request):
    42 #    template = get_template('comment.html')
    64     template = get_template('comment.html')
    43 #    resp = {}
    65     resp = {}
    44     # for elt, comments in comments_by_chapter(id).iteritems():
    66     for elt, comments in comments_by_chapter(chapter).iteritems():
    45     form = CommentForm(initial={
    67         print elt ,comments
    46             'id': 'elt',
    68         form = CommentForm(initial={
    47             'name': 'name'
    69             'paragraph_id': elt,
       
    70             'name': name
    48             })
    71             })
    49     resp['elt'] = template.render(Context({
    72         resp[elt] = template.render(Context({
    50             'id': 'elt',
    73             'paragraph_id': elt,
    51             'form': form,
    74             'form': form,
    52             'length': 5,
    75             'length': len(comments),
    53             'query': 'abcde',
    76             'query': comments,
    54             }))
    77             }))
    55     return HttpResponse(dumps(resp), mimetype='application/json')
    78     return HttpResponse(dumps(resp), mimetype='application/json')
    56 
    79 
    57 def chapter_count(request):
    80 def chapter_count(request,chapter_name):
    58 #     resp = comments_by_chapter(chapter_name)
    81     print chapter_name
    59 # #   for elt, comments in resp.iteritems():
    82     chapter_name=chapter_name.split('.')[0]
    60 # #        resp[elt] = len(comments)
    83     comment_objs = comments_by_chapter(chapter_name)
    61     resp={}
    84     resp={}
    62     resp['elt']=5
    85     temp_dict={}
       
    86     for elt, comments in comment_objs.iteritems():
       
    87         temp_dict[elt]=len(comments)
       
    88 
       
    89     resp['count']=temp_dict
       
    90       
       
    91     
       
    92     print resp
    63     return HttpResponse(dumps(resp), mimetype='application/json')
    93     return HttpResponse(dumps(resp), mimetype='application/json')
    64     
    94     
    65 def single(request, id, form=None, newid=None):
    95 def single(request,paragraph_id, form=None, newid=None):
    66     queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
    96     paragraph_id=paragraph_id[:-1]
       
    97     queryset = Comment.objects.filter(element=paragraph_id)
       
    98     print paragraph_id 
    67     if form is None:
    99     if form is None:
    68         form = CommentForm(initial={
   100         form = CommentForm(initial={
    69             'id': id,
   101             'paragraph_id': paragraph_id,
    70             'name': request.session.get('name', ''),
   102             'name': request.session.get('name', ''),
    71             })
   103             })
    72     try:
   104     try:
    73         error = form.errors[0]
   105         error = form.errors[0]
    74     except:
   106     except:
    75         error = ''
   107         error = ''
       
   108     print form.errors
    76     return render_to_response('comment.html', {
   109     return render_to_response('comment.html', {
    77         'id': id,
   110         'paragraph_id': paragraph_id,
    78         'form': form,
   111         'form': form,
    79         'length': len(queryset),
   112         'length': len(queryset),
    80         'query': queryset,
   113         'query': queryset,
    81         'newid': newid or True,
   114         'newid': newid or True,
    82         'error': error,
   115         'error': error,
    83         })
   116         })
    84 
   117 
    85 def submit(request, id):
   118 
    86     element = get_object_or_404(Element, id=id)
   119 
       
   120 
       
   121 def submit(request, paragraph_id):
       
   122     try:
       
   123         element = get_object_or_404(Element, paragraph_id=paragraph_id)
       
   124     except Http404:
       
   125         chapter_id='_'.join(paragraph_id.split('_')[0:-1])
       
   126         chapter_name=chapter_id.replace('_','/')
       
   127         element=Element(chapter_name=chapter_name,paragraph_id=paragraph_id)
       
   128         element.save()
       
   129     print element.chapter_name
    87     form = None
   130     form = None
    88     newid = None
   131     newid = None
       
   132     
    89     if request.method == 'POST':
   133     if request.method == 'POST':
    90         form = CommentForm(request.POST)
   134         form = CommentForm(request.POST)
       
   135         print form.errors
    91         if form.is_valid():
   136         if form.is_valid():
       
   137             print form.cleaned_data
    92             data = form.cleaned_data
   138             data = form.cleaned_data
    93             if data.get('remember'):
   139             if data.get('remember'):
    94                 request.session['name'] = data['name']
   140                 request.session['name'] = data['name']
    95                 request.session['url'] = data['url']
   141                 request.session['url'] = data['url']
    96             else:
   142             else:
    99             c = Comment(element=element,
   145             c = Comment(element=element,
   100                         comment=data['comment'],
   146                         comment=data['comment'],
   101                         submitter_name=data['name'],
   147                         submitter_name=data['name'],
   102                         submitter_url=data['url'],
   148                         submitter_url=data['url'],
   103                         ip=request.META.get('REMOTE_ADDR'))
   149                         ip=request.META.get('REMOTE_ADDR'))
       
   150             print c
   104             c.save()
   151             c.save()
   105             newid = c.id
   152            
   106             form = None
   153             form = None
   107     return single(request, id, form, newid)
   154     return single(request, paragraph_id, form,)
   108 
   155 
   109 def test(request):
   156 def test(request):
   110     print request
   157     print request
   111     string="<p>test comment</p>"
   158     string="<p>test comment</p>"
   112     return HttpResponse(dumps(string),mimetype="application/json")
   159     return HttpResponse(string,mimetype="text/plain")
   113     
   160     
   114        
   161        
   115 
   162 
   116 #return HttpResponse(dumps(string),mimetype="text/plain")
   163 #return HttpResponse(dumps(string),mimetype="text/plain")
   117 #test= csrf_exempt(test)
   164 #test= csrf_exempt(test)