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 from django.conf import settings |
|
14 from os.path import join, splitext |
|
15 from BeautifulSoup import BeautifulSoup as bss, Tag |
13 |
16 |
14 |
17 #placeholder_string = open('paragraph_id.py').read() |
15 placeholder_string = open('paragraph_id.py').read() |
18 #exec placeholder_string |
16 exec placeholder_string |
|
17 |
19 |
18 def dump_queries(): |
20 def dump_queries(): |
19 # requires settings.DEBUG to be set to True in order to work |
21 # requires settings.DEBUG to be set to True in order to work |
20 if len(connection.queries) == 1: |
22 if len(connection.queries) == 1: |
21 print connection.queries |
23 print connection.queries |
36 remember = forms.BooleanField(initial=True, required=False) |
38 remember = forms.BooleanField(initial=True, required=False) |
37 |
39 |
38 def comments_by_chapter(chapter): |
40 def comments_by_chapter(chapter): |
39 objs = {} |
41 objs = {} |
40 |
42 |
41 try: |
43 for c in Comment.objects.filter(element__chapter_name=chapter).order_by('date'): |
42 para_list=p_list[chapter] |
44 objs.setdefault(c.element.paragraph_id, []).append(c) |
43 |
45 |
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 |
46 |
56 |
47 |
57 |
48 |
58 return objs |
49 return objs |
|
50 |
59 |
51 |
60 |
52 |
61 |
53 |
62 |
54 |
63 |
55 |
64 |
56 |
65 def chapter(request): |
57 # def chapter(request): |
66 template = get_template('comment.html') |
58 # template = get_template('comment.html') |
67 resp = {} |
59 # resp = {} |
68 for elt, comments in comments_by_chapter(chapter).iteritems(): |
60 # for elt, comments in comments_by_chapter(chapter).iteritems(): |
69 print elt ,comments |
61 # print elt ,comments |
70 form = CommentForm(initial={ |
62 # form = CommentForm(initial={ |
71 'paragraph_id': elt, |
63 # 'paragraph_id': elt, |
72 'name': name |
64 # 'name': name |
73 }) |
65 # }) |
74 resp[elt] = template.render(Context({ |
66 # resp[elt] = template.render(Context({ |
75 'paragraph_id': elt, |
67 # 'paragraph_id': elt, |
76 'form': form, |
68 # 'form': form, |
77 'length': len(comments), |
69 # 'length': len(comments), |
78 'query': comments, |
70 # 'query': comments, |
79 })) |
71 # })) |
80 return HttpResponse(dumps(resp), mimetype='application/json') |
72 # return HttpResponse(dumps(resp), mimetype='application/json') |
81 |
73 |
82 def chapter_count(request,chapter_name): |
74 def chapter_count(request,chapter_name): |
83 print chapter_name |
75 print chapter_name |
84 chapter_name=chapter_name.split('.')[0] |
76 chapter_name=chapter_name.split('.')[0] |
85 comment_objs = comments_by_chapter(chapter_name) |
77 comment_objs = comments_by_chapter(chapter_name) |
96 |
88 |
97 def single(request,paragraph_id, form=None, newid=None): |
89 def single(request,paragraph_id, form=None, newid=None): |
98 if paragraph_id[-1]=='/': |
90 if paragraph_id[-1]=='/': |
99 paragraph_id=paragraph_id[:-1] |
91 paragraph_id=paragraph_id[:-1] |
100 queryset = Comment.objects.filter(element=paragraph_id) |
92 queryset = Comment.objects.filter(element=paragraph_id) |
101 print paragraph_id |
93 print len(queryset) |
102 if form is None: |
94 if form is None: |
103 form = CommentForm(initial={ |
95 form = CommentForm(initial={ |
104 'paragraph_id': paragraph_id, |
96 'paragraph_id': paragraph_id, |
105 'name': request.session.get('name', ''), |
97 'name': request.session.get('name', ''), |
106 }) |
98 }) |
161 def test(request): |
153 def test(request): |
162 print request |
154 print request |
163 string="<p>test comment</p>" |
155 string="<p>test comment</p>" |
164 return HttpResponse(string,mimetype="text/plain") |
156 return HttpResponse(string,mimetype="text/plain") |
165 |
157 |
166 |
158 def page(req, path): |
167 |
159 if splitext(path)[1] == '.html': |
|
160 soup = bss(open(join(settings.SPHINX_PROJECT, path)).read()) |
|
161 head = soup.find('head') |
|
162 first_script = Tag(soup, 'script') |
|
163 first_script['src'] = "../_static/simplecomment.js" |
|
164 first_script['type'] = "text/javascript" |
|
165 second_script = Tag(soup, 'script') |
|
166 second_script['src'] = "../_static/jquery.form.js" |
|
167 second_script['type'] = "text/javascript" |
|
168 head.insert(-1, first_script) |
|
169 head.insert(-1, second_script) |
|
170 counter = 0 |
|
171 page_identity = path.split('.')[0].replace('/', '_') |
|
172 for p in soup.findAll('p'): |
|
173 p['id'] = '%s_%s' %(page_identity, counter) |
|
174 counter += 1 |
|
175 return HttpResponse(str(soup)) |
|
176 else: |
|
177 return HttpResponse(open(join(settings.SPHINX_PROJECT, path)).read()) |
|
178 |
168 #return HttpResponse(dumps(string),mimetype="text/plain") |
179 #return HttpResponse(dumps(string),mimetype="text/plain") |
169 #test= csrf_exempt(test) |
180 #test= csrf_exempt(test) |
170 |
181 |