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) |
|
45 |
43 |
46 |
44 for paragraph_id in para_list: |
47 |
45 objs[paragraph_id]=[] |
48 |
|
49 return objs |
46 |
50 |
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 |
51 |
58 |
52 |
59 |
53 |
60 |
54 |
61 |
55 |
62 |
56 |
63 def chapter(request): |
57 # def chapter(request): |
64 template = get_template('comment.html') |
58 # template = get_template('comment.html') |
65 resp = {} |
59 # resp = {} |
66 for elt, comments in comments_by_chapter(chapter).iteritems(): |
60 # for elt, comments in comments_by_chapter(chapter).iteritems(): |
67 print elt ,comments |
61 # print elt ,comments |
68 form = CommentForm(initial={ |
62 # form = CommentForm(initial={ |
69 'paragraph_id': elt, |
63 # 'paragraph_id': elt, |
70 'name': name |
64 # 'name': name |
71 }) |
65 # }) |
72 resp[elt] = template.render(Context({ |
66 # resp[elt] = template.render(Context({ |
73 'paragraph_id': elt, |
67 # 'paragraph_id': elt, |
74 'form': form, |
68 # 'form': form, |
75 'length': len(comments), |
69 # 'length': len(comments), |
76 'query': comments, |
70 # 'query': comments, |
77 })) |
71 # })) |
78 return HttpResponse(dumps(resp), mimetype='application/json') |
72 # return HttpResponse(dumps(resp), mimetype='application/json') |
79 |
73 |
80 def chapter_count(request,chapter_name): |
74 def chapter_count(request,chapter_name): |
81 print chapter_name |
75 print chapter_name |
82 chapter_name=chapter_name.split('.')[0] |
76 chapter_name=chapter_name.split('.')[0] |
83 comment_objs = comments_by_chapter(chapter_name) |
77 comment_objs = comments_by_chapter(chapter_name) |
91 |
85 |
92 print resp |
86 print resp |
93 return HttpResponse(dumps(resp), mimetype='application/json') |
87 return HttpResponse(dumps(resp), mimetype='application/json') |
94 |
88 |
95 def single(request,paragraph_id, form=None, newid=None): |
89 def single(request,paragraph_id, form=None, newid=None): |
96 paragraph_id=paragraph_id[:-1] |
90 if paragraph_id[-1]=='/': |
|
91 paragraph_id=paragraph_id[:-1] |
97 queryset = Comment.objects.filter(element=paragraph_id) |
92 queryset = Comment.objects.filter(element=paragraph_id) |
98 print paragraph_id |
93 print len(queryset) |
99 if form is None: |
94 if form is None: |
100 form = CommentForm(initial={ |
95 form = CommentForm(initial={ |
101 'paragraph_id': paragraph_id, |
96 'paragraph_id': paragraph_id, |
102 'name': request.session.get('name', ''), |
97 'name': request.session.get('name', ''), |
103 }) |
98 }) |
117 |
112 |
118 |
113 |
119 |
114 |
120 |
115 |
121 def submit(request, paragraph_id): |
116 def submit(request, paragraph_id): |
|
117 |
122 try: |
118 try: |
123 element = get_object_or_404(Element, paragraph_id=paragraph_id) |
119 element = get_object_or_404(Element, paragraph_id=paragraph_id) |
124 except Http404: |
120 except Http404: |
|
121 #creating chapter name from paragraph_id surely there is a better way using the context but i do not know as yet |
125 chapter_id='_'.join(paragraph_id.split('_')[0:-1]) |
122 chapter_id='_'.join(paragraph_id.split('_')[0:-1]) |
126 chapter_name=chapter_id.replace('_','/') |
123 chapter_name=chapter_id[-1::-1].replace('_','/',1)[-1::-1] |
127 element=Element(chapter_name=chapter_name,paragraph_id=paragraph_id) |
124 element=Element(chapter_name=chapter_name,paragraph_id=paragraph_id) |
128 element.save() |
125 element.save() |
129 print element.chapter_name |
126 print element.chapter_name |
130 form = None |
127 form = None |
131 newid = None |
128 newid = None |
156 def test(request): |
153 def test(request): |
157 print request |
154 print request |
158 string="<p>test comment</p>" |
155 string="<p>test comment</p>" |
159 return HttpResponse(string,mimetype="text/plain") |
156 return HttpResponse(string,mimetype="text/plain") |
160 |
157 |
161 |
158 def page(req, path): |
162 |
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 |
163 #return HttpResponse(dumps(string),mimetype="text/plain") |
179 #return HttpResponse(dumps(string),mimetype="text/plain") |
164 #test= csrf_exempt(test) |
180 #test= csrf_exempt(test) |
165 |
181 |