diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2013-04-28 00:14:50 +0200 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2013-04-28 23:09:20 +0200 |
commit | 2e6ee596ad9dbc794979069f2f14b856db02343b (patch) | |
tree | 0b6559f86001b33053c1956701b280ed044e749b | |
parent | 8f88b1f6dc88f76b5e01bc43db26055ab3fbc921 (diff) | |
download | mediagoblin-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.py | 10 | ||||
-rw-r--r-- | mediagoblin/tools/response.py | 7 | ||||
-rw-r--r-- | mediagoblin/user_pages/views.py | 20 |
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)): |