From 1c63ad5d352f5eb38a4d634b9aea84cbeee269a4 Mon Sep 17 00:00:00 2001 From: Elrond Date: Sun, 5 Jun 2011 15:25:45 +0200 Subject: [PATCH 1/3] Create render_to_reponse and use it everywhere. Just a shortcut for Response(render_template(...)) --- mediagoblin/auth/views.py | 34 ++++++++++++++------------------- mediagoblin/edit/views.py | 9 ++++----- mediagoblin/submit/views.py | 14 ++++++-------- mediagoblin/user_pages/views.py | 14 ++++++-------- mediagoblin/util.py | 6 ++++++ mediagoblin/views.py | 9 +++------ 6 files changed, 39 insertions(+), 47 deletions(-) diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py index 2d24328d..a5112299 100644 --- a/mediagoblin/auth/views.py +++ b/mediagoblin/auth/views.py @@ -16,9 +16,9 @@ import uuid -from webob import Response, exc +from webob import exc -from mediagoblin.util import render_template +from mediagoblin.util import render_to_response from mediagoblin.db.util import ObjectId from mediagoblin.auth import lib as auth_lib from mediagoblin.auth import forms as auth_forms @@ -59,16 +59,14 @@ def register(request): location=request.urlgen("mediagoblin.auth.register_success")) # render - return Response( - render_template( + return render_to_response( request, 'mediagoblin/auth/register.html', - {'register_form': register_form})) + {'register_form': register_form}) def register_success(request): - return Response( - render_template( - request, 'mediagoblin/auth/register_success.html', {})) + return render_to_response( + request, 'mediagoblin/auth/register_success.html', {}) def login(request): @@ -103,12 +101,11 @@ def login(request): login_failed = True # render - return Response( - render_template( + return render_to_response( request, 'mediagoblin/auth/login.html', {'login_form': login_form, 'next': request.GET.get('next') or request.POST.get('next'), - 'login_failed': login_failed})) + 'login_failed': login_failed}) def logout(request): @@ -141,11 +138,10 @@ def verify_email(request): else: verification_successful = False - return Response( - render_template( + return render_to_response( request, 'mediagoblin/auth/verify_email.html', {'user': user, - 'verification_successful': verification_successful})) + 'verification_successful': verification_successful}) def verify_email_notice(request): """ @@ -154,9 +150,8 @@ def verify_email_notice(request): When the user tries to do some action that requires their account to be verified beforehand, this view is called upon! """ - return Response( - render_template( - request, 'mediagoblin/auth/verification_needed.html', {})) + return render_to_response( + request, 'mediagoblin/auth/verification_needed.html', {}) def resend_activation(request): @@ -176,6 +171,5 @@ def resend_activation(request): def resend_activation_success(request): - return Response( - render_template( - request, 'mediagoblin/auth/resent_verification_email.html', {})) + return render_to_response( + request, 'mediagoblin/auth/resent_verification_email.html', {}) diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index 027a426c..ac286bec 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -15,9 +15,9 @@ # along with this program. If not, see . -from webob import Response, exc +from webob import exc -from mediagoblin.util import render_template +from mediagoblin.util import render_to_response from mediagoblin.edit import forms from mediagoblin.edit.lib import may_edit_media from mediagoblin.decorators import require_active_login, get_user_media_entry @@ -57,8 +57,7 @@ def edit_media(request, media): user=media.uploader()['username'], media=media['slug'])) # render - return Response( - render_template( + return render_to_response( request, 'mediagoblin/edit/edit.html', {'media': media, - 'form': form})) + 'form': form}) diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index 256f5be9..a51e14e6 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -17,10 +17,10 @@ from os.path import splitext from cgi import FieldStorage -from webob import Response, exc +from webob import exc from werkzeug.utils import secure_filename -from mediagoblin.util import render_template +from mediagoblin.util import render_to_response from mediagoblin.decorators import require_active_login from mediagoblin.submit import forms as submit_forms from mediagoblin.process_media import process_media_initial @@ -81,14 +81,12 @@ def submit_start(request): location=request.urlgen("mediagoblin.submit.success")) # render - return Response( - render_template( + return render_to_response( request, 'mediagoblin/submit/start.html', - {'submit_form': submit_form})) + {'submit_form': submit_form}) def submit_success(request): # render - return Response( - render_template( - request, 'mediagoblin/submit/success.html', {})) + return render_to_response( + request, 'mediagoblin/submit/success.html', {}) diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py index 6ea3fe36..0442e736 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -14,9 +14,9 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from webob import Response, exc +from webob import exc from mediagoblin.db.util import DESCENDING -from mediagoblin.util import Pagination, render_template +from mediagoblin.util import Pagination, render_to_response from mediagoblin.decorators import uses_pagination, get_user_media_entry @@ -42,21 +42,19 @@ def user_home(request, page): if media_entries == None: return exc.HTTPNotFound() - return Response( - render_template( + return render_to_response( request, 'mediagoblin/user_pages/user.html', {'user': user, 'media_entries': media_entries, - 'pagination': pagination})) + 'pagination': pagination}) @get_user_media_entry def media_home(request, media): """'Homepage' of a MediaEntry()""" - return Response( - render_template( + return render_to_response( request, 'mediagoblin/user_pages/media.html', - {'media': media})) + {'media': media}) ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 5 diff --git a/mediagoblin/util.py b/mediagoblin/util.py index 3649b6c3..f69c91f2 100644 --- a/mediagoblin/util.py +++ b/mediagoblin/util.py @@ -29,6 +29,7 @@ from babel.localedata import exists import jinja2 import translitcodec from paste.deploy.loadwsgi import NicerConfigParser +from webob import Response from mediagoblin import globals as mgoblin_globals from mediagoblin.db.util import ObjectId @@ -117,6 +118,11 @@ def clear_test_template_context(): TEMPLATE_TEST_CONTEXT = {} +def render_to_response(request, template, context): + """Much like Django's shortcut.render()""" + return Response(render_template(request, template, context)) + + def setup_user_in_request(request): """ Examine a request and tack on a request.user parameter if that's diff --git a/mediagoblin/views.py b/mediagoblin/views.py index ee0b520a..dc2d45ba 100644 --- a/mediagoblin/views.py +++ b/mediagoblin/views.py @@ -14,16 +14,13 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from webob import Response - -from mediagoblin.util import render_template +from mediagoblin.util import render_to_response from mediagoblin.db.util import DESCENDING def root_view(request): media_entries = request.db.MediaEntry.find( {u'state': u'processed'}).sort('created', DESCENDING) - return Response( - render_template( + return render_to_response( request, 'mediagoblin/root.html', - {'media_entries': media_entries})) + {'media_entries': media_entries}) From c9c24934357300c436ac63531f91b7608f80fd21 Mon Sep 17 00:00:00 2001 From: Elrond Date: Sun, 5 Jun 2011 16:02:12 +0200 Subject: [PATCH 2/3] Reformat render_to_response calls Just a simple indentation and ordering change, no functional change. --- mediagoblin/auth/views.py | 38 ++++++++++++++++----------------- mediagoblin/edit/views.py | 9 ++++---- mediagoblin/submit/views.py | 12 +++++------ mediagoblin/user_pages/views.py | 16 +++++++------- mediagoblin/views.py | 6 +++--- 5 files changed, 38 insertions(+), 43 deletions(-) diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py index a5112299..d54e673c 100644 --- a/mediagoblin/auth/views.py +++ b/mediagoblin/auth/views.py @@ -58,15 +58,14 @@ def register(request): return exc.HTTPFound( location=request.urlgen("mediagoblin.auth.register_success")) - # render - return render_to_response( - request, 'mediagoblin/auth/register.html', - {'register_form': register_form}) + return render_to_response(request, + 'mediagoblin/auth/register.html', + {'register_form': register_form}) def register_success(request): - return render_to_response( - request, 'mediagoblin/auth/register_success.html', {}) + return render_to_response(request, + 'mediagoblin/auth/register_success.html', {}) def login(request): @@ -100,12 +99,11 @@ def login(request): auth_lib.fake_login_attempt() login_failed = True - # render - return render_to_response( - request, 'mediagoblin/auth/login.html', - {'login_form': login_form, - 'next': request.GET.get('next') or request.POST.get('next'), - 'login_failed': login_failed}) + return render_to_response(request, + 'mediagoblin/auth/login.html', + {'login_form': login_form, + 'next': request.GET.get('next') or request.POST.get('next'), + 'login_failed': login_failed}) def logout(request): @@ -138,10 +136,10 @@ def verify_email(request): else: verification_successful = False - return render_to_response( - request, 'mediagoblin/auth/verify_email.html', - {'user': user, - 'verification_successful': verification_successful}) + return render_to_response(request, + 'mediagoblin/auth/verify_email.html', + {'user': user, + 'verification_successful': verification_successful}) def verify_email_notice(request): """ @@ -150,8 +148,8 @@ def verify_email_notice(request): When the user tries to do some action that requires their account to be verified beforehand, this view is called upon! """ - return render_to_response( - request, 'mediagoblin/auth/verification_needed.html', {}) + return render_to_response(request, + 'mediagoblin/auth/verification_needed.html', {}) def resend_activation(request): @@ -171,5 +169,5 @@ def resend_activation(request): def resend_activation_success(request): - return render_to_response( - request, 'mediagoblin/auth/resent_verification_email.html', {}) + return render_to_response(request, + 'mediagoblin/auth/resent_verification_email.html', {}) diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index ac286bec..258f14e3 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -56,8 +56,7 @@ def edit_media(request, media): location=request.urlgen("mediagoblin.user_pages.media_home", user=media.uploader()['username'], media=media['slug'])) - # render - return render_to_response( - request, 'mediagoblin/edit/edit.html', - {'media': media, - 'form': form}) + return render_to_response(request, + 'mediagoblin/edit/edit.html', + {'media': media, + 'form': form}) diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index a51e14e6..95257b72 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -80,13 +80,11 @@ def submit_start(request): return exc.HTTPFound( location=request.urlgen("mediagoblin.submit.success")) - # render - return render_to_response( - request, 'mediagoblin/submit/start.html', - {'submit_form': submit_form}) + return render_to_response(request, + 'mediagoblin/submit/start.html', + {'submit_form': submit_form}) def submit_success(request): - # render - return render_to_response( - request, 'mediagoblin/submit/success.html', {}) + return render_to_response(request, + 'mediagoblin/submit/success.html', {}) diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py index 0442e736..e2fbcc80 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -42,19 +42,19 @@ def user_home(request, page): if media_entries == None: return exc.HTTPNotFound() - return render_to_response( - request, 'mediagoblin/user_pages/user.html', - {'user': user, - 'media_entries': media_entries, - 'pagination': pagination}) + return render_to_response(request, + 'mediagoblin/user_pages/user.html', + {'user': user, + 'media_entries': media_entries, + 'pagination': pagination}) @get_user_media_entry def media_home(request, media): """'Homepage' of a MediaEntry()""" - return render_to_response( - request, 'mediagoblin/user_pages/media.html', - {'media': media}) + return render_to_response(request, + 'mediagoblin/user_pages/media.html', + {'media': media}) ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 5 diff --git a/mediagoblin/views.py b/mediagoblin/views.py index dc2d45ba..22673d59 100644 --- a/mediagoblin/views.py +++ b/mediagoblin/views.py @@ -21,6 +21,6 @@ def root_view(request): media_entries = request.db.MediaEntry.find( {u'state': u'processed'}).sort('created', DESCENDING) - return render_to_response( - request, 'mediagoblin/root.html', - {'media_entries': media_entries}) + return render_to_response(request, + 'mediagoblin/root.html', + {'media_entries': media_entries}) From 9150244afa45628dd752a67272129d30d6c72224 Mon Sep 17 00:00:00 2001 From: Elrond Date: Sun, 5 Jun 2011 15:49:08 +0200 Subject: [PATCH 3/3] Create redirect shortcut and use it around This is just replacing exc.HTTPFound(location=request.urlgen(...)) by redirect(request, ...). No magic. --- mediagoblin/auth/views.py | 15 +++++---------- mediagoblin/decorators.py | 6 +++--- mediagoblin/edit/views.py | 8 +++----- mediagoblin/submit/views.py | 7 ++----- mediagoblin/util.py | 7 ++++++- 5 files changed, 19 insertions(+), 24 deletions(-) diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py index d54e673c..36d23e53 100644 --- a/mediagoblin/auth/views.py +++ b/mediagoblin/auth/views.py @@ -18,7 +18,7 @@ import uuid from webob import exc -from mediagoblin.util import render_to_response +from mediagoblin.util import render_to_response, redirect from mediagoblin.db.util import ObjectId from mediagoblin.auth import lib as auth_lib from mediagoblin.auth import forms as auth_forms @@ -54,9 +54,7 @@ def register(request): send_verification_email(entry, request) - # Redirect to register_success - return exc.HTTPFound( - location=request.urlgen("mediagoblin.auth.register_success")) + return redirect(request, "mediagoblin.auth.register_success") return render_to_response(request, 'mediagoblin/auth/register.html', @@ -90,8 +88,7 @@ def login(request): if request.POST.get('next'): return exc.HTTPFound(location=request.POST['next']) else: - return exc.HTTPFound( - location=request.urlgen("index")) + return redirect(request, "index") else: # Prevent detecting who's on this system by testing login @@ -110,8 +107,7 @@ def logout(request): # Maybe deleting the user_id parameter would be enough? request.session.delete() - return exc.HTTPFound( - location=request.urlgen("index")) + return redirect(request, "index") def verify_email(request): @@ -164,8 +160,7 @@ def resend_activation(request): send_verification_email(request.user, request) - return exc.HTTPFound( - location=request.urlgen('mediagoblin.auth.resend_verification_success')) + return redirect(request, 'mediagoblin.auth.resend_verification_success') def resend_activation_success(request): diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py index 34575320..c2fe3f9f 100644 --- a/mediagoblin/decorators.py +++ b/mediagoblin/decorators.py @@ -18,6 +18,7 @@ from bson.errors import InvalidId from webob import exc +from mediagoblin.util import redirect from mediagoblin.db.util import ObjectId @@ -38,9 +39,8 @@ def require_active_login(controller): def new_controller_func(request, *args, **kwargs): if request.user and \ request.user.get('status') == u'needs_email_verification': - return exc.HTTPFound( - location = request.urlgen( - 'mediagoblin.auth.verify_email_notice')) + return redirect(request, + 'mediagoblin.auth.verify_email_notice') elif not request.user or request.user.get('status') != u'active': return exc.HTTPFound( location="%s?next=%s" % ( diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index 258f14e3..04b73567 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -17,7 +17,7 @@ from webob import exc -from mediagoblin.util import render_to_response +from mediagoblin.util import render_to_response, redirect from mediagoblin.edit import forms from mediagoblin.edit.lib import may_edit_media from mediagoblin.decorators import require_active_login, get_user_media_entry @@ -51,10 +51,8 @@ def edit_media(request, media): media['slug'] = request.POST['slug'] media.save() - # redirect - return exc.HTTPFound( - location=request.urlgen("mediagoblin.user_pages.media_home", - user=media.uploader()['username'], media=media['slug'])) + return redirect(request, "mediagoblin.user_pages.media_home", + user=media.uploader()['username'], media=media['slug']) return render_to_response(request, 'mediagoblin/edit/edit.html', diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index 95257b72..d4ecc75a 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -17,10 +17,9 @@ from os.path import splitext from cgi import FieldStorage -from webob import exc from werkzeug.utils import secure_filename -from mediagoblin.util import render_to_response +from mediagoblin.util import render_to_response, redirect from mediagoblin.decorators import require_active_login from mediagoblin.submit import forms as submit_forms from mediagoblin.process_media import process_media_initial @@ -76,9 +75,7 @@ def submit_start(request): # queue it for processing process_media_initial.delay(unicode(entry['_id'])) - # redirect - return exc.HTTPFound( - location=request.urlgen("mediagoblin.submit.success")) + return redirect(request, "mediagoblin.submit.success") return render_to_response(request, 'mediagoblin/submit/start.html', diff --git a/mediagoblin/util.py b/mediagoblin/util.py index f69c91f2..a0a09adf 100644 --- a/mediagoblin/util.py +++ b/mediagoblin/util.py @@ -29,7 +29,7 @@ from babel.localedata import exists import jinja2 import translitcodec from paste.deploy.loadwsgi import NicerConfigParser -from webob import Response +from webob import Response, exc from mediagoblin import globals as mgoblin_globals from mediagoblin.db.util import ObjectId @@ -123,6 +123,11 @@ def render_to_response(request, template, context): return Response(render_template(request, template, context)) +def redirect(request, *args, **kwargs): + """Returns a HTTPFound(), takes a request and then urlgen params""" + return exc.HTTPFound(location=request.urlgen(*args, **kwargs)) + + def setup_user_in_request(request): """ Examine a request and tack on a request.user parameter if that's