﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
15694	Overriding Django admin views and nested transactions	Dave Hall	Aymeric Augustin	"This problem is related to #2227, but has a potentially easier solution.

Because the Django admin site directly decorates it's methods with @commit_on_success, and @commit_on_success is unaware on nested outer transactions, it's currently impossible to override an admin view and maintain data integrity. This is a problem for django-reversion, which augments many of the django admin methods by wrapping them in a revision. Ideally, I would be able to save the primary model and it's associated revision data in a single transaction. Currently, however, the superclass view commits the transaction and thus forces the associated revision data to be saved in it's own transaction.

Obviously, a satisfactory fix for #2227 would solve this. However, this ticket seems to be a bit dead, due to conflicting ways of solving it.

Fixing the problem of overriding admin views is easier, however. My proposed solution is to move the existing @commit_on_success and @csrf_protect decorators off the methods, and apply them in the admin site under AdminSite.admin_view instead. This would mean they are applied after all subclassing has taken place.

I've implemented a tentative patch here:

https://github.com/etianen/django/commit/6682fc31c810f763f08dcf14505c5762ab1d18a1"	New feature	closed	contrib.admin	1.2	Normal	fixed		Dave Hall mmitar@…	Design decision needed	0	1	1	0	0	0
