From 91d281c021dc4626966d210c4f7c05eb4ffe5688 Mon Sep 17 00:00:00 2001 From: Jon Dufresne Date: Sun, 12 Aug 2018 07:23:03 -0700 Subject: [PATCH] [2.1.x] Added ModelAdmin._response_post_save() to avoid code duplication. Backport of 57f16655cd5031ef04bf5e310c9e1d31eff912ce from master --- django/contrib/admin/options.py | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index a8baf87d46..d1071ebb2a 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -1322,11 +1322,7 @@ class ModelAdmin(BaseModelAdmin): self.message_user(request, msg, messages.SUCCESS) return self.response_post_save_change(request, obj) - def response_post_save_add(self, request, obj): - """ - Figure out where to redirect after the 'Save' button has been pressed - when adding a new object. - """ + def _response_post_save(self, request, obj): opts = self.model._meta if self.has_change_permission(request, None): post_url = reverse('admin:%s_%s_changelist' % @@ -1339,23 +1335,19 @@ class ModelAdmin(BaseModelAdmin): current_app=self.admin_site.name) return HttpResponseRedirect(post_url) + def response_post_save_add(self, request, obj): + """ + Figure out where to redirect after the 'Save' button has been pressed + when adding a new object. + """ + return self._response_post_save(request, obj) + 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): - post_url = reverse('admin:%s_%s_changelist' % - (opts.app_label, opts.model_name), - current_app=self.admin_site.name) - preserved_filters = self.get_preserved_filters(request) - post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url) - else: - post_url = reverse('admin:index', - current_app=self.admin_site.name) - return HttpResponseRedirect(post_url) + return self._response_post_save(request, obj) def response_action(self, request, queryset): """