web/hgbook/comments/views.py
changeset 0 8083d21c0020
child 1 672eaaab9204
equal deleted inserted replaced
-1:000000000000 0:8083d21c0020
       
     1 import sys
       
     2 import django.forms as forms
       
     3 from django.db import connection
       
     4 from django.http import HttpResponse
       
     5 from hgbook.comments.models import Comment, Element
       
     6 from django.shortcuts import get_object_or_404, render_to_response
       
     7 from django.template import Context ,RequestContext
       
     8 from django.template.loader import get_template
       
     9 from django.utils.simplejson import dumps 
       
    10 from p_list import *
       
    11 from BeautifulSoup import BeautifulSoup
       
    12 import glob
       
    13 html_folder='/home/amit/hgbook-alqua/web/html/'
       
    14 
       
    15 def sort_dict(dict):
       
    16 	new_dict = {}
       
    17 	sorted_keys = dict.keys()
       
    18 	sorted_keys.sort()
       
    19 	print >> sys.stderr , sorted_keys
       
    20 	for key in sorted_keys:
       
    21 		new_dict[key] = dict[key]
       
    22 
       
    23 	return new_dict
       
    24 
       
    25 def dump_queries():
       
    26     # requires settings.DEBUG to be set to True in order to work
       
    27     if len(connection.queries) == 1:
       
    28         print connection.queries
       
    29     else:
       
    30         qs = {}
       
    31         for q in connection.queries:
       
    32             qs[q['sql']] = qs.setdefault(q['sql'], 0) + 1
       
    33         for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
       
    34             print q
       
    35         print len(connection.queries)
       
    36 
       
    37 class CommentForm(forms.Form):
       
    38     id = forms.CharField(widget=forms.HiddenInput)
       
    39     name = forms.CharField(max_length=64)
       
    40     url = forms.URLField(max_length=128, required=False)
       
    41     comment = forms.CharField(widget=forms.Textarea(attrs={
       
    42         'rows': 8, 'cols': 60
       
    43         }))
       
    44     remember = forms.BooleanField(initial=True, required=False)
       
    45 
       
    46 def search(request):
       
    47 	print request
       
    48 
       
    49 
       
    50 def index(request):
       
    51 	html_files = glob.glob(html_folder+'ch*.html')
       
    52 #	print >> sys.stderr , html_files	
       
    53 	html_files.sort()
       
    54 	link_list=['/review/html/'+a.split('/')[-1] for a in html_files]
       
    55 #	print >> sys.stderr , html_files        
       
    56 	title_list=[]
       
    57 	for html_file in html_files:
       
    58 		file_str=open(html_file,'r').read()			
       
    59 		soup_obj=BeautifulSoup(''.join(file_str))
       
    60 		title_str=soup_obj.html.head.title.string		
       
    61 		title_str=unicode(title_str)		
       
    62 		title_str.encode('ascii','ignore')              
       
    63 		title_list.append(title_str)
       
    64 	
       
    65 	resp_dict=zip(link_list,title_list)
       
    66 	
       
    67 	return render_to_response('index.html', {'resp_dict': resp_dict })
       
    68 
       
    69 
       
    70 
       
    71 
       
    72 
       
    73 
       
    74 
       
    75 def comments_by_chapter(id):
       
    76     objs = {}
       
    77     for c in Comment.objects.filter(element=id, hidden=False).order_by('date'):
       
    78         objs.setdefault(c.element_id, []).append(c)
       
    79     return objs
       
    80 
       
    81 def chapter(request, id):
       
    82     template = get_template('comment.html')
       
    83     resp = {}
       
    84     for elt, comments in comments_by_chapter(id).iteritems():
       
    85             
       
    86         form = CommentForm(initial={
       
    87             'id': elt,
       
    88             'name': request.session.get('name', ''),
       
    89             })
       
    90             
       
    91 
       
    92 
       
    93     resp[elt] = template.render(RequestContext({
       
    94             'id': elt,
       
    95             'form': form,
       
    96             'length': len(comments),
       
    97             'query': comments,
       
    98             }))
       
    99     return HttpResponse(dumps(resp), mimetype='application/json')
       
   100 
       
   101 #    queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
       
   102 #    if form is None:
       
   103 #        form = CommentForm(initial={
       
   104 #            'id': id,
       
   105 #            'name': request.session.get('name', ''),
       
   106 #            })
       
   107 #    try:
       
   108 #        error = form.errors[0]
       
   109 #    except:
       
   110 #        error = ''
       
   111 #    return render_to_response('comment.html', {
       
   112 #        'id': id,
       
   113 #        'form': form,
       
   114 #        'length': len(queryset),
       
   115 #        'query': queryset,
       
   116 #        'newid': newid or True,
       
   117 #        'error': error,
       
   118 #        })
       
   119 
       
   120 
       
   121 
       
   122 
       
   123 
       
   124 def single_com(request,id):
       
   125      
       
   126 #    template = get_template('comment.html')
       
   127     resp = {}
       
   128     print >> sys.stderr ,id   
       
   129     for i in p_list[id]:	
       
   130 #        form=None
       
   131         queryset = Comment.objects.filter(element=i, hidden=False).order_by('date')
       
   132                 
       
   133 #        if form is None:
       
   134 #		form = CommentForm(initial={
       
   135 #		    'id': id,
       
   136 #		    'name': request.session.get('name', ''),
       
   137 #        })
       
   138         if len(queryset)==0:
       
   139             resp[i] = "No"
       
   140         elif len(queryset)==1:
       
   141             resp[i]="One"
       
   142         else:
       
   143             resp[i] = len(queryset)
       
   144 #            'id': i,
       
   145 #           'form': form,
       
   146 #            'length': len(queryset),
       
   147 #            'query': queryset,
       
   148             
       
   149     return HttpResponse(dumps(resp), mimetype='application/json')
       
   150 #    template = get_template('comment.html')    
       
   151 #    for i in p_list[id]:	
       
   152 #        form=None
       
   153 #        queryset = Comment.objects.filter(element=i, hidden=False).order_by('date')
       
   154 #        print queryset        
       
   155 #        if form is None:
       
   156 #		form = CommentForm(initial={
       
   157 #		    'id': id,
       
   158 #		    'name': request.session.get('name', ''),
       
   159 #		    })
       
   160 #       try:
       
   161 #		    error = form.errors[0]
       
   162 #        except:
       
   163 #            error = ''
       
   164 	    
       
   165 #    return HttpResponse(response_list)
       
   166 
       
   167 
       
   168 
       
   169 
       
   170 
       
   171 
       
   172 def chapter_count(request, id):
       
   173       
       
   174     resp = comments_by_chapter(id)
       
   175     
       
   176     for elt, comments in resp.iteritems():
       
   177               
       
   178         resp[elt] = len(comments)
       
   179      
       
   180     return HttpResponse(dumps(resp), mimetype='application/json')
       
   181     
       
   182 def single(request, id, form=None, newid=None ):
       
   183     queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
       
   184     if form is None:
       
   185         form = CommentForm(initial={
       
   186             'id': id,
       
   187             'name': request.session.get('name', ''),
       
   188             })
       
   189     try:
       
   190         error = form.errors[0]
       
   191     except:
       
   192         error = ''
       
   193     return render_to_response('comment.html', {
       
   194         'id': id,
       
   195         'form': form,
       
   196         'length': len(queryset),
       
   197         'query': queryset,
       
   198         'newid': newid or True,
       
   199         'error': error,
       
   200         })
       
   201 
       
   202 def submit(request, id):
       
   203 #    print request
       
   204 #    print id    
       
   205     try :    
       
   206         element=Element.objects.get(id=id,chapter='chap_intro')
       
   207     except Element.DoesNotExist:
       
   208         element=Element(id=id)    
       
   209 	element.save()    
       
   210     
       
   211    
       
   212     if request.method == 'POST':
       
   213        
       
   214 	form = CommentForm(request.POST)
       
   215 	   
       
   216 	if form.is_valid():
       
   217             data = form.cleaned_data
       
   218             
       
   219 	    if data.get('remember'):
       
   220 		               
       
   221 		request.session['name'] = data['name']
       
   222                 request.session['url'] = data['url']
       
   223             else:
       
   224                 request.session.pop('name', None)
       
   225                 request.session.pop('url', None)
       
   226             c = Comment(element=element,
       
   227                         comment=data['comment'],
       
   228                         submitter_name=data['name'],
       
   229                         submitter_url=data['url'],
       
   230                         ip=request.META.get('REMOTE_ADDR'))
       
   231           
       
   232 			
       
   233 	c.save()
       
   234         newid=c.id        
       
   235         form = None
       
   236     return single(request, id, form, newid)
       
   237