changeset 135:537aa92d7179 draft

requestcontext: use RequestContext in templates Using TEMPLATE_CONTEXT_PROCESSORS we get access to a lot of information like current user, request object, etc. This is really handy to avoid manually filling or copy/pasting the data dictionaries for the render_to_response calls.
author diegoe-guest
date Mon, 10 Aug 2009 23:40:38 +0000
parents c6bf9f23af62
children 8c9dddbd97b0
files bts_webui/amancay/bugs.py bts_webui/amancay/tables.py bts_webui/amancay/templates/bug.html bts_webui/amancay/views.py bts_webui/settings.py
diffstat 5 files changed, 40 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- a/bts_webui/amancay/bugs.py
+++ b/bts_webui/amancay/bugs.py
@@ -1,24 +1,18 @@
 # vim: set sw=4 ts=4 sts=4 noet:
-import datetime
 # The bug page uses regular expresions to parse the log
 import re
 # The bug page uses rfc822 to parse emails, dates, etc.
 import email
 
 # Needed to get_template, prepare context and output Response
-from django.template import Context, loader
-from django.http import HttpResponse, HttpResponseRedirect
+from django.template import RequestContext, Context, loader
 
 # Shortcut for rendering a response
-from django.shortcuts import get_object_or_404, render_to_response
+from django.shortcuts import render_to_response
 
 # Model clases
-from django.contrib.auth.models import User
 from bts_webui.amancay.models import Pending_Messages
 
-# Needed for AJAX
-from django.utils import simplejson
-
 # Needed for SOAP
 from bts_queries import SoapQueries
 
@@ -37,15 +31,14 @@
 	# Process post
 	info = process_bug_post(request, bug_number)
 
-	user = request.user
 	# FIXME: we need API
-	user.subscribed = False
+	request.user.subscribed = False
 	queries = SoapQueries()
 	bug_status = queries.get_bugs_status(bug_number)[0]
 	bug_originator = email.Utils.parseaddr(bug_status['originator'])
 	bug_log = queries.get_bug_log(bug_number)
 	# having as a selected bug is not the same as subscribing
-	bug_is_fav = bool(user.bug_set.filter(number=bug_number)[:1])
+	bug_is_fav = bool(request.user.bug_set.filter(number=bug_number)[:1])
 
 	# Regular expressions to parse the mails
 	from_re = re.compile('^From: ?(.+)$', re.MULTILINE)
@@ -102,9 +95,8 @@
 							   'bug_originator': bug_originator,
 							   'bug_status': bug_status,
 							   'bug_messages': bug_messages,
-							   'bug_is_fav': bug_is_fav,
-							   'current_user': user}
-							 )
+							   'bug_is_fav': bug_is_fav},
+							  context_instance=RequestContext(request))
 
 def process_bug_post(request, bug_number):
 	"""
@@ -145,7 +137,6 @@
 	return handle_email(request, to_address, subject, text)
 
 def add_comment(request, bug_number):
-	user = request.user
 	subject = request.POST.get('subject')
 	comment = request.POST.get('comment')
 
@@ -158,7 +149,6 @@
 		return 'You need to enter both the subject and the comment.'
 
 def reassign(request, bug_number):
-	user = request.user
 	package = request.POST.get('reassign_to')
 	version = request.POST.get('reassign_version')
 	comment = request.POST.get('reassign_comment')
@@ -237,9 +227,8 @@
 	Sends an email to to_address if the user is authenticated, otherwise it
 	saves it in queue.
 	"""
-	user = request.user
-	if user.is_authenticated():
-		send_mail(subject, text, user.email, to_address)
+	if request.user.is_authenticated():
+		send_mail(subject, text, request.user.email, to_address)
 		return 'Your comment has been successfully sent'
 	else:
 		from_address = request.POST.get('from_email')
@@ -304,6 +293,5 @@
 		status = 'Malformed activation key'
 
 	return render_to_response('search.html',
-							  {'info_to_user': status,
-							   'current_user': request.user}
-							 )
+							  {'info_to_user': status},
+							  context_instance=RequestContext(request))
--- a/bts_webui/amancay/tables.py
+++ b/bts_webui/amancay/tables.py
@@ -1,13 +1,12 @@
 # vim: set sw=4 ts=4 sts=4 noet:
-
 import datetime
 
 # Needed to get_template, prepare context and output Response
-from django.template import Context, loader
+from django.template import RequestContext
 from django.http import HttpResponse, HttpResponseRedirect
 
 # Shortcut for rendering a response
-from django.shortcuts import get_object_or_404, render_to_response
+from django.shortcuts import render_to_response
 
 # Model clases
 from django.contrib.auth.models import User
@@ -31,10 +30,14 @@
 	else:
 		bug_list = None
 
-	fav_packages = [p.package_name for p in request.user.package_set.all()]
-	for bug in bug_list:
-		if bug.package in fav_packages:
-			bug.pkg_fav = True
+	if request.user.is_authenticated():
+		fav_packages = [p.package_name for p in request.user.package_set.all()]
+
+		for bug in bug_list:
+			if bug.package in fav_packages:
+				bug.pkg_fav = True
+			else:
+				bug.pkg_fav = False
 
 	if request.GET.has_key('xhr'):
 		# We only need to list the data.
@@ -46,18 +49,13 @@
 								  {'bug_list': bug_list,
 								   'table_title': title,
 								   'current_view': current_view},
-								 )
+								  context_instance=RequestContext(request))
 	else:
-		# We need to render the whole page
-		# Get the corresponding toolbox
-		toolbox = get_toolbox(request)
 		return render_to_response('index.html', 
 								  {'bug_list': bug_list,
 								   'table_title': title,
-								   'toolbox': toolbox,
-								   'current_view': current_view,
-								   'current_user': request.user}
-								 )
+								   'current_view': current_view},
+								  context_instance=RequestContext(request))
 
 # Bug views
 def submitted_bugs(request):
--- a/bts_webui/amancay/templates/bug.html
+++ b/bts_webui/amancay/templates/bug.html
@@ -1,4 +1,5 @@
 {% extends "base.html" %}
+{% comment %} vim: set sw=4 ts=4 sts=4 noet: {% endcomment %}
 {% load template_filters %}
 
 {% block title %}Amancay BTS interface - Bug View{% endblock %}
@@ -77,7 +78,7 @@
 		{% endif %}
 	</div>
 	<div id="subscribe">
-	{% if current_user.is_authenticated %}
+	{% if user.is_authenticated %}
 		<a href="#http://bugs.debian.org/cgi-bin/bugspam.cgi?bug={{ bug_number }}" class="action" id="report_spam">
 		<img id="spam_img" src="/static/icons/mail-mark-junk.png" /> <span id="spam_text">This report contains spam</span>
 		</a>
@@ -88,7 +89,7 @@
 		</script>
 
 		<a href="javascript:toggle_subscribe({{ bug_number }})" class="action">
-		{% if current_user.subscribed %}
+		{% if user.subscribed %}
 		<img id="subscribe_img" src="/static/icons/list-remove.png" /> <span id="subscribe_text">Unsubscribe from this report</span>
 		{% else %}
 		<img id="subscribe_img" src="/static/icons/list-add.png" /> <span id="subscribe_text">Subscribe to this report</span>
--- a/bts_webui/amancay/views.py
+++ b/bts_webui/amancay/views.py
@@ -1,39 +1,24 @@
 # vim: set sw=4 ts=4 sts=4 noet:
 import datetime
 
-# Needed to get_template, prepare context and output Response
-from django.template import Context, loader
 from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import get_object_or_404, render_to_response
+from django.template import RequestContext
+from django.utils import simplejson
 
-# Shortcut for rendering a response
-from django.shortcuts import get_object_or_404, render_to_response
-
-# Model clases
 from django.contrib.auth.models import User
 from bts_webui.amancay.models import Package
 
-# Needed for AJAX
-from django.utils import simplejson
-
 # Needed for SOAP
 from bts_queries import SoapQueries
 
-# Tables POST processing
-from tables import process_post, selected_bugs
-from search import search
-
 def index(request):
 	"""
 	Our pretty useless index page.
 	"""
-	if request.user:
-		user = request.user
-	else:
-		user = None
 
-	return render_to_response('home.html',
-							  {'user': user,}
-							 )
+	return render_to_response('home.html', {},
+							  context_instance=RequestContext(request))
 
 def package(request, package_name):
 	"""
@@ -54,6 +39,5 @@
 	else:
 		return render_to_response('package.html',
 								  {'package': package_name,
-								   'bug_list': bug_list,
-								   'current_user': user}
-								 )
+								   'bug_list': bug_list},
+								  context_instance=RequestContext(request))
--- a/bts_webui/settings.py
+++ b/bts_webui/settings.py
@@ -12,7 +12,7 @@
 )
 
 EMAIL_HOST = 'localhost'
-EMAIL_PORT = '25'
+EMAIL_PORT = '1025'
 
 MANAGERS = ADMINS
 
@@ -61,6 +61,12 @@
 #     'django.template.loaders.eggs.load_template_source',
 )
 
+TEMPLATE_CONTEXT_PROCESSORS = (
+	'django.core.context_processors.auth',
+	'django.core.context_processors.debug',
+	'django.core.context_processors.request',
+)
+
 MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',