1
0
mirror of https://github.com/django/django.git synced 2025-07-04 01:39:20 +00:00

newforms-admin: Fixed #5735. Wrapped save_add and save_change with commit_on_success to ensure data consistency if an inline fails to save. Thanks, Honza Kral.

git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7188 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Brian Rosner 2008-02-29 21:39:13 +00:00
parent ea78533a28
commit 61b9c8fe00

View File

@ -5,7 +5,7 @@ from django.contrib.contenttypes.models import ContentType
from django.contrib.admin import widgets from django.contrib.admin import widgets
from django.contrib.admin.util import get_deleted_objects from django.contrib.admin.util import get_deleted_objects
from django.core.exceptions import ImproperlyConfigured, PermissionDenied from django.core.exceptions import ImproperlyConfigured, PermissionDenied
from django.db import models from django.db import models, transaction
from django.http import Http404, HttpResponse, HttpResponseRedirect from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response from django.shortcuts import get_object_or_404, render_to_response
from django.utils.html import escape from django.utils.html import escape
@ -401,6 +401,7 @@ class ModelAdmin(BaseModelAdmin):
else: else:
post_url = '../../../' post_url = '../../../'
return HttpResponseRedirect(post_url) return HttpResponseRedirect(post_url)
save_add = transaction.commit_on_success(save_add)
def save_change(self, request, model, form, formsets=None): def save_change(self, request, model, form, formsets=None):
""" """
@ -451,6 +452,7 @@ class ModelAdmin(BaseModelAdmin):
else: else:
request.user.message_set.create(message=msg) request.user.message_set.create(message=msg)
return HttpResponseRedirect("../") return HttpResponseRedirect("../")
save_change = transaction.commit_on_success(save_change)
def render_change_form(self, request, model, context, add=False, change=False, form_url='', obj=None): def render_change_form(self, request, model, context, add=False, change=False, form_url='', obj=None):
opts = model._meta opts = model._meta