aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2011-06-05 15:36:51 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2011-06-05 15:36:51 -0500
commita7fcc027aa5f3f080a288eedeb5d153ca71a53d7 (patch)
tree3a464904b2c4420b4f239be411e755ba80498a32
parentcb9bac0c83b7dd6d9153fc153b7282c26fe466f6 (diff)
parent9150244afa45628dd752a67272129d30d6c72224 (diff)
downloadmediagoblin-a7fcc027aa5f3f080a288eedeb5d153ca71a53d7.tar.lz
mediagoblin-a7fcc027aa5f3f080a288eedeb5d153ca71a53d7.tar.xz
mediagoblin-a7fcc027aa5f3f080a288eedeb5d153ca71a53d7.zip
Merge remote branch 'remotes/elrond/idea/shortcuts'
-rw-r--r--mediagoblin/auth/views.py61
-rw-r--r--mediagoblin/decorators.py6
-rw-r--r--mediagoblin/edit/views.py20
-rw-r--r--mediagoblin/submit/views.py21
-rw-r--r--mediagoblin/user_pages/views.py22
-rw-r--r--mediagoblin/util.py11
-rw-r--r--mediagoblin/views.py11
7 files changed, 67 insertions, 85 deletions
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index 2d24328d..36d23e53 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, redirect
from mediagoblin.db.util import ObjectId
from mediagoblin.auth import lib as auth_lib
from mediagoblin.auth import forms as auth_forms
@@ -54,21 +54,16 @@ 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")
- # render
- return Response(
- render_template(
- 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 Response(
- render_template(
- request, 'mediagoblin/auth/register_success.html', {}))
+ return render_to_response(request,
+ 'mediagoblin/auth/register_success.html', {})
def login(request):
@@ -93,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
@@ -102,21 +96,18 @@ def login(request):
auth_lib.fake_login_attempt()
login_failed = True
- # render
- return Response(
- render_template(
- 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):
# 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):
@@ -141,11 +132,10 @@ def verify_email(request):
else:
verification_successful = False
- return Response(
- render_template(
- 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):
"""
@@ -154,9 +144,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):
@@ -171,11 +160,9 @@ 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):
- 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/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 027a426c..04b73567 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -15,9 +15,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from webob import Response, exc
+from webob import exc
-from mediagoblin.util import render_template
+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,14 +51,10 @@ 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'])
- # render
- return Response(
- render_template(
- 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 256f5be9..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 Response, exc
from werkzeug.utils import secure_filename
-from mediagoblin.util import render_template
+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,19 +75,13 @@ 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")
- # render
- return Response(
- render_template(
- 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 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..e2fbcc80 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 <http://www.gnu.org/licenses/>.
-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(
- 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 Response(
- render_template(
- 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/util.py b/mediagoblin/util.py
index b675662e..cbb937ee 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, exc
from mediagoblin import globals as mgoblin_globals
from mediagoblin.db.util import ObjectId
@@ -117,6 +118,16 @@ 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 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
diff --git a/mediagoblin/views.py b/mediagoblin/views.py
index ee0b520a..22673d59 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 <http://www.gnu.org/licenses/>.
-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(
- request, 'mediagoblin/root.html',
- {'media_entries': media_entries}))
+ return render_to_response(request,
+ 'mediagoblin/root.html',
+ {'media_entries': media_entries})