aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2013-04-28 00:14:50 +0200
committerElrond <elrond+mediagoblin.org@samba-tng.org>2013-04-28 23:09:20 +0200
commit2e6ee596ad9dbc794979069f2f14b856db02343b (patch)
tree0b6559f86001b33053c1956701b280ed044e749b
parent8f88b1f6dc88f76b5e01bc43db26055ab3fbc921 (diff)
downloadmediagoblin-2e6ee596ad9dbc794979069f2f14b856db02343b.tar.lz
mediagoblin-2e6ee596ad9dbc794979069f2f14b856db02343b.tar.xz
mediagoblin-2e6ee596ad9dbc794979069f2f14b856db02343b.zip
Create redir_obj and use it around.
This is a shortcut function to redirect to the main page for an object. Objects currently supported: media entries and collections. And go around and replace various places to use this.
-rw-r--r--mediagoblin/edit/views.py10
-rw-r--r--mediagoblin/tools/response.py7
-rw-r--r--mediagoblin/user_pages/views.py20
3 files changed, 18 insertions, 19 deletions
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 34b7aaca..bfcf65b5 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -28,7 +28,8 @@ from mediagoblin.edit.lib import may_edit_media
from mediagoblin.decorators import (require_active_login, active_user_from_url,
get_media_entry_by_id,
user_may_alter_collection, get_user_collection)
-from mediagoblin.tools.response import render_to_response, redirect
+from mediagoblin.tools.response import render_to_response, \
+ redirect, redirect_obj
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.text import (
convert_to_tag_list_of_dicts, media_tags_as_string)
@@ -74,8 +75,7 @@ def edit_media(request, media):
media.slug = slug
media.save()
- return redirect(request,
- location=media.url_for_self(request.urlgen))
+ return redirect_obj(request, media)
if request.user.is_admin \
and media.uploader != request.user.id \
@@ -331,9 +331,7 @@ def edit_collection(request, collection):
collection.save()
- return redirect(request, "mediagoblin.user_pages.user_collection",
- user=collection.get_creator.username,
- collection=collection.slug)
+ return redirect_obj(request, collection)
if request.user.is_admin \
and collection.creator != request.user.id \
diff --git a/mediagoblin/tools/response.py b/mediagoblin/tools/response.py
index 80df1f5a..aaf31d0b 100644
--- a/mediagoblin/tools/response.py
+++ b/mediagoblin/tools/response.py
@@ -99,3 +99,10 @@ def redirect(request, *args, **kwargs):
if querystring:
location += querystring
return werkzeug.utils.redirect(location)
+
+
+def redirect_obj(request, obj):
+ """Redirect to the page for the given object.
+
+ Requires obj to have a .url_for_self method."""
+ return redirect(request, location=obj.url_for_self(request.urlgen))
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index 21b0c016..a028c305 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -20,7 +20,8 @@ import datetime
from mediagoblin import messages, mg_globals
from mediagoblin.db.models import (MediaEntry, MediaTag, Collection,
CollectionItem, User)
-from mediagoblin.tools.response import render_to_response, render_404, redirect
+from mediagoblin.tools.response import render_to_response, render_404, \
+ redirect, redirect_obj
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.pagination import Pagination
from mediagoblin.user_pages import forms as user_forms
@@ -178,7 +179,7 @@ def media_post_comment(request, media):
media_uploader.wants_comment_notification):
send_comment_email(media_uploader, comment, media, request)
- return redirect(request, location=media.url_for_self(request.urlgen))
+ return redirect_obj(request, media)
@get_media_entry_by_id
@@ -255,9 +256,7 @@ def media_collect(request, media):
_('"%s" added to collection "%s"')
% (media.title, collection.title))
- return redirect(request, "mediagoblin.user_pages.media_home",
- user=media.get_uploader.username,
- media=media.slug_or_id)
+ return redirect_obj(request, media)
#TODO: Why does @user_may_delete_media not implicate @require_active_login?
@@ -282,8 +281,7 @@ def media_confirm_delete(request, media):
messages.add_message(
request, messages.ERROR,
_("The media was not deleted because you didn't check that you were sure."))
- return redirect(request,
- location=media.url_for_self(request.urlgen))
+ return redirect_obj(request, media)
if ((request.user.is_admin and
request.user.id != media.uploader)):
@@ -369,9 +367,7 @@ def collection_item_confirm_remove(request, collection_item):
request, messages.ERROR,
_("The item was not removed because you didn't check that you were sure."))
- return redirect(request, "mediagoblin.user_pages.user_collection",
- user=username,
- collection=collection.slug)
+ return redirect_obj(request, collection)
if ((request.user.is_admin and
request.user.id != collection_item.in_collection.creator)):
@@ -419,9 +415,7 @@ def collection_confirm_delete(request, collection):
request, messages.ERROR,
_("The collection was not deleted because you didn't check that you were sure."))
- return redirect(request, "mediagoblin.user_pages.user_collection",
- user=username,
- collection=collection.slug)
+ return redirect_obj(request, collection)
if ((request.user.is_admin and
request.user.id != collection.creator)):