sphinx_django/sphinxcomment/views.py~
changeset 0 54f784230511
child 2 f5e18f8ed036
equal deleted inserted replaced
-1:000000000000 0:54f784230511
       
     1 # Create your views here.
       
     2 from django.http import HttpResponse
       
     3 from django.utils.simplejson import dumps 
       
     4 from django.contrib.csrf.middleware import csrf_exempt
       
     5 import django.forms as forms
       
     6 from django.db import connection
       
     7 from django.http import HttpResponse
       
     8 from sphinxcomment.models import Comment, Element
       
     9 from django.shortcuts import get_object_or_404, render_to_response
       
    10 from django.template import Context
       
    11 from django.template.loader import get_template
       
    12 from django.utils.simplejson import dumps 
       
    13 
       
    14 # def dump_queries():
       
    15 #     # requires settings.DEBUG to be set to True in order to work
       
    16 #     if len(connection.queries) == 1:
       
    17 #         print connection.queries
       
    18 #     else:
       
    19 #         qs = {}
       
    20 #         for q in connection.queries:
       
    21 #             qs[q['sql']] = qs.setdefault(q['sql'], 0) + 1
       
    22 #         for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
       
    23 #             print q
       
    24 #         print len(connection.queries)
       
    25 
       
    26 class CommentForm(forms.Form):
       
    27     id = forms.CharField(widget=forms.HiddenInput)
       
    28     name = forms.CharField(max_length=64)
       
    29     url = forms.URLField(max_length=128, required=False)
       
    30     comment = forms.CharField(widget=forms.Textarea(attrs={
       
    31         'rows': 8, 'cols': 60
       
    32         }))
       
    33     remember = forms.BooleanField(initial=True, required=False)
       
    34 
       
    35 def comments_by_chapter(chapter):
       
    36     objs = {}
       
    37     for c in Comment.objects.filter(element__chapter=id, hidden=False).order_by('date'):
       
    38         objs.setdefault(c.element_id, []).append(c)
       
    39     return objs
       
    40 
       
    41 def chapter(request):
       
    42 #    template = get_template('comment.html')
       
    43 #    resp = {}
       
    44     # for elt, comments in comments_by_chapter(id).iteritems():
       
    45     form = CommentForm(initial={
       
    46             'id': 'elt',
       
    47             'name': 'name'
       
    48             })
       
    49     resp['elt'] = template.render(Context({
       
    50             'id': 'elt',
       
    51             'form': form,
       
    52             'length': 5,
       
    53             'query': 'abcde',
       
    54             }))
       
    55     return HttpResponse(dumps(resp), mimetype='application/json')
       
    56 
       
    57 def chapter_count(request):
       
    58 #     resp = comments_by_chapter(chapter_name)
       
    59 # #   for elt, comments in resp.iteritems():
       
    60 # #        resp[elt] = len(comments)
       
    61     resp={}
       
    62     resp['elt']=5
       
    63     return HttpResponse(dumps(resp), mimetype='application/json')
       
    64     
       
    65 def single(request, id, form=None, newid=None):
       
    66     queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
       
    67     if form is None:
       
    68         form = CommentForm(initial={
       
    69             'id': id,
       
    70             'name': request.session.get('name', ''),
       
    71             })
       
    72     try:
       
    73         error = form.errors[0]
       
    74     except:
       
    75         error = ''
       
    76     return render_to_response('comment.html', {
       
    77         'id': id,
       
    78         'form': form,
       
    79         'length': len(queryset),
       
    80         'query': queryset,
       
    81         'newid': newid or True,
       
    82         'error': error,
       
    83         })
       
    84 
       
    85 def submit(request, id):
       
    86     element = get_object_or_404(Element, id=id)
       
    87     form = None
       
    88     newid = None
       
    89     if request.method == 'POST':
       
    90         form = CommentForm(request.POST)
       
    91         if form.is_valid():
       
    92             data = form.cleaned_data
       
    93             if data.get('remember'):
       
    94                 request.session['name'] = data['name']
       
    95                 request.session['url'] = data['url']
       
    96             else:
       
    97                 request.session.pop('name', None)
       
    98                 request.session.pop('url', None)
       
    99             c = Comment(element=element,
       
   100                         comment=data['comment'],
       
   101                         submitter_name=data['name'],
       
   102                         submitter_url=data['url'],
       
   103                         ip=request.META.get('REMOTE_ADDR'))
       
   104             c.save()
       
   105             newid = c.id
       
   106             form = None
       
   107     return single(request, id, form, newid)
       
   108 
       
   109 def test(request):
       
   110     print request
       
   111     string="<p>test comment</p>"
       
   112     return HttpResponse(dumps(string),mimetype="application/json")
       
   113     
       
   114        
       
   115 
       
   116 #return HttpResponse(dumps(string),mimetype="text/plain")
       
   117 #test= csrf_exempt(test)
       
   118