summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJulien Phalip <jphalip@gmail.com>2012-12-30 21:33:21 -0800
committerJulien Phalip <jphalip@gmail.com>2012-12-30 21:33:21 -0800
commitcee40c7d79930ff42bde4730f43e68a624e47b0f (patch)
tree3e25c340c81f26eeb5f1ace204382d00c1824480 /django
parentf80a1934cdb465c70ecc215fdf867e555a670623 (diff)
Added further flexibility to ModelAdmin for controlling post-save redirections.
Refs #19505.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/options.py27
1 files changed, 20 insertions, 7 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index b0c2c4dcf9..8e0aaccc86 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -1,6 +1,5 @@
import copy
from functools import update_wrapper, partial
-import warnings
from django import forms
from django.conf import settings
@@ -824,7 +823,7 @@ class ModelAdmin(BaseModelAdmin):
else:
msg = _('The %(name)s "%(obj)s" was added successfully.') % msg_dict
self.message_user(request, msg)
- return self.response_post_save(request, obj)
+ return self.response_post_save_add(request, obj)
def response_change(self, request, obj):
"""
@@ -858,13 +857,27 @@ class ModelAdmin(BaseModelAdmin):
else:
msg = _('The %(name)s "%(obj)s" was changed successfully.') % msg_dict
self.message_user(request, msg)
- return self.response_post_save(request, obj)
+ return self.response_post_save_change(request, obj)
- def response_post_save(self, request, obj):
+ def response_post_save_add(self, request, obj):
"""
- Figure out where to redirect after the 'Save' button has been pressed.
- If the user has change permission, redirect to the change-list page for
- this object. Otherwise, redirect to the admin index.
+ Figure out where to redirect after the 'Save' button has been pressed
+ when adding a new object.
+ """
+ opts = self.model._meta
+ if self.has_change_permission(request, None):
+ post_url = reverse('admin:%s_%s_changelist' %
+ (opts.app_label, opts.module_name),
+ current_app=self.admin_site.name)
+ else:
+ post_url = reverse('admin:index',
+ current_app=self.admin_site.name)
+ return HttpResponseRedirect(post_url)
+
+ def response_post_save_change(self, request, obj):
+ """
+ Figure out where to redirect after the 'Save' button has been pressed
+ when editing an existing object.
"""
opts = self.model._meta
if self.has_change_permission(request, None):