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