--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SEESenv/web/hgbook/comments/views.py~ Fri Feb 12 01:11:21 2010 +0530
@@ -0,0 +1,239 @@
+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)
+