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