sphinx_django/sphinxcomment/views.py
changeset 3 de4a2ed2f34b
parent 2 f5e18f8ed036
equal deleted inserted replaced
2:f5e18f8ed036 3:de4a2ed2f34b
     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