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