Mercurial > hg > bts-webui
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',