SEESenv/web/hgbook/comments/views.py~
author amit@thunder
Sat, 13 Feb 2010 12:29:22 +0530
changeset 3 6cee07c589cb
parent 2 52d12eb31c30
permissions -rw-r--r--
Changes in path of some of the files ...

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/hg/repos/SEES-hacks/SEESenv/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)