web/hgbook/comments/views.py
author amit@thunder
Fri, 05 Feb 2010 23:42:24 +0530
changeset 1 672eaaab9204
parent 0 8083d21c0020
permissions -rwxr-xr-x
Added some new html files that failed earlier during change from rst

import sys
import django.forms as forms
from django.db import connection
from django.http import HttpResponse
from hgbook.comments.models import Comment, Element
from django.shortcuts import get_object_or_404, render_to_response
from django.template import Context ,RequestContext
from django.template.loader import get_template
from django.utils.simplejson import dumps 
from p_list import *
from BeautifulSoup import BeautifulSoup
import glob
html_folder='/home/amit/SEES-hacks/web/html/'

def sort_dict(dict):
	new_dict = {}
	sorted_keys = dict.keys()
	sorted_keys.sort()
	print >> sys.stderr , sorted_keys
	for key in sorted_keys:
		new_dict[key] = dict[key]

	return new_dict

def dump_queries():
    # requires settings.DEBUG to be set to True in order to work
    if len(connection.queries) == 1:
        print connection.queries
    else:
        qs = {}
        for q in connection.queries:
            qs[q['sql']] = qs.setdefault(q['sql'], 0) + 1
        for q in sorted(qs.items(), key=lambda x: x[1], reverse=True):
            print q
        print len(connection.queries)

class CommentForm(forms.Form):
    id = forms.CharField(widget=forms.HiddenInput)
    name = forms.CharField(max_length=64)
    url = forms.URLField(max_length=128, required=False)
    comment = forms.CharField(widget=forms.Textarea(attrs={
        'rows': 8, 'cols': 60
        }))
    remember = forms.BooleanField(initial=True, required=False)

def search(request):
	print request


def index(request):
	html_files = glob.glob(html_folder+'ch*.html')
	print >> sys.stderr ,html_files	
	print >> sys.stderr ,"just checking whether i got here"	
	print >> sys.stderr , html_files	
	html_files.sort()
	link_list=['/review/html/'+a.split('/')[-1] for a in html_files]
#	print >> sys.stderr , html_files        
	title_list=[]
	for html_file in html_files:
		file_str=open(html_file,'r').read()			
		soup_obj=BeautifulSoup(''.join(file_str))
		title_str=soup_obj.html.head.title.string		
		title_str=unicode(title_str)		
		title_str.encode('ascii','ignore')              
		title_list.append(title_str)
	
	resp_dict=zip(link_list,title_list)
	print >>sys.stderr ,resp_dict
	return render_to_response('index.html', {'resp_dict': resp_dict })







def comments_by_chapter(id):
    objs = {}
    for c in Comment.objects.filter(element=id, hidden=False).order_by('date'):
        objs.setdefault(c.element_id, []).append(c)
    return objs

def chapter(request, id):
    template = get_template('comment.html')
    resp = {}
    for elt, comments in comments_by_chapter(id).iteritems():
            
        form = CommentForm(initial={
            'id': elt,
            'name': request.session.get('name', ''),
            })
            


    resp[elt] = template.render(RequestContext({
            'id': elt,
            'form': form,
            'length': len(comments),
            'query': comments,
            }))
    return HttpResponse(dumps(resp), mimetype='application/json')

#    queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
#    if form is None:
#        form = CommentForm(initial={
#            'id': id,
#            'name': request.session.get('name', ''),
#            })
#    try:
#        error = form.errors[0]
#    except:
#        error = ''
#    return render_to_response('comment.html', {
#        'id': id,
#        'form': form,
#        'length': len(queryset),
#        'query': queryset,
#        'newid': newid or True,
#        'error': error,
#        })





def single_com(request,id):
     
#    template = get_template('comment.html')
    resp = {}
    print >> sys.stderr ,id   
    for i in p_list[id]:	
#        form=None
        queryset = Comment.objects.filter(element=i, hidden=False).order_by('date')
                
#        if form is None:
#		form = CommentForm(initial={
#		    'id': id,
#		    'name': request.session.get('name', ''),
#        })
        if len(queryset)==0:
            resp[i] = "No"
        elif len(queryset)==1:
            resp[i]="One"
        else:
            resp[i] = len(queryset)
#            'id': i,
#           'form': form,
#            'length': len(queryset),
#            'query': queryset,
            
    return HttpResponse(dumps(resp), mimetype='application/json')
#    template = get_template('comment.html')    
#    for i in p_list[id]:	
#        form=None
#        queryset = Comment.objects.filter(element=i, hidden=False).order_by('date')
#        print queryset        
#        if form is None:
#		form = CommentForm(initial={
#		    'id': id,
#		    'name': request.session.get('name', ''),
#		    })
#       try:
#		    error = form.errors[0]
#        except:
#            error = ''
	    
#    return HttpResponse(response_list)






def chapter_count(request, id):
      
    resp = comments_by_chapter(id)
    
    for elt, comments in resp.iteritems():
              
        resp[elt] = len(comments)
     
    return HttpResponse(dumps(resp), mimetype='application/json')
    
def single(request, id, form=None, newid=None ):
    queryset = Comment.objects.filter(element=id, hidden=False).order_by('date')
    if form is None:
        form = CommentForm(initial={
            'id': id,
            'name': request.session.get('name', ''),
            })
    try:
        error = form.errors[0]
    except:
        error = ''
    return render_to_response('comment.html', {
        'id': id,
        'form': form,
        'length': len(queryset),
        'query': queryset,
        'newid': newid or True,
        'error': error,
        })

def submit(request, id):
#    print request
#    print id    
    try :    
        element=Element.objects.get(id=id,chapter='chap_intro')
    except Element.DoesNotExist:
        element=Element(id=id)    
	element.save()    
    
   
    if request.method == 'POST':
       
	form = CommentForm(request.POST)
	   
	if form.is_valid():
            data = form.cleaned_data
            
	    if data.get('remember'):
		               
		request.session['name'] = data['name']
                request.session['url'] = data['url']
            else:
                request.session.pop('name', None)
                request.session.pop('url', None)
            c = Comment(element=element,
                        comment=data['comment'],
                        submitter_name=data['name'],
                        submitter_url=data['url'],
                        ip=request.META.get('REMOTE_ADDR'))
          
			
	c.save()
        newid=c.id        
        form = None
    return single(request, id, form, newid)