|
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 |