summaryrefslogtreecommitdiff
path: root/tests/admin_views/admin.py
diff options
context:
space:
mode:
authorKamil Braun <kb346840@students.mimuw.edu.pl>2014-11-27 19:34:14 +0100
committerTim Graham <timograham@gmail.com>2014-12-02 08:43:59 -0500
commitccc30ffe57e5f1e4dbda371b8a1d00c19a3150aa (patch)
tree6e75016a6a99b24135263fadc27d4a804981c7b7 /tests/admin_views/admin.py
parent3a42d9730cbb07ffbb983791e631f5d0a6746f68 (diff)
[1.7.x] Fixed #23934 -- Fixed regression in admin views obj parameter.
Backport of 0623f4dea46eefba46efde6c6528f7d813ef4391 from master
Diffstat (limited to 'tests/admin_views/admin.py')
-rw-r--r--tests/admin_views/admin.py28
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index 964ea83599..9a05df614a 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -18,7 +18,8 @@ from django.contrib.admin import BooleanFieldListFilter
from django.utils.safestring import mark_safe
from django.utils.six import StringIO
-from .models import (Article, Chapter, Child, Parent, Picture, Widget,
+from .models import (
+ Article, Chapter, Child, Parent, Picture, Widget,
DooHickey, Grommet, Whatsit, FancyDoodad, Category, Link,
PrePopulatedPost, PrePopulatedSubPost, CustomArticle, Section,
ModelWithStringPrimaryKey, Color, Thing, Actor, Inquisition, Sketch,
@@ -37,7 +38,9 @@ from .models import (Article, Chapter, Child, Parent, Picture, Widget,
State, City, Restaurant, Worker, ParentWithDependentChildren,
DependentChild, StumpJoke, FieldOverridePost, FunkyTag,
ReferencedByParent, ChildOfReferer, ReferencedByInline,
- InlineReference, InlineReferer, Recipe, Ingredient, NotReferenced)
+ InlineReference, InlineReferer, Recipe, Ingredient, NotReferenced,
+ ExplicitlyProvidedPK, ImplicitlyGeneratedPK,
+)
def callable_year(dt_value):
@@ -835,6 +838,25 @@ class InlineRefererAdmin(admin.ModelAdmin):
inlines = [InlineReferenceInline]
+class GetFormsetsArgumentCheckingAdmin(admin.ModelAdmin):
+ fields = ['name']
+
+ def add_view(self, request, *args, **kwargs):
+ request.is_add_view = True
+ return super(GetFormsetsArgumentCheckingAdmin, self).add_view(request, *args, **kwargs)
+
+ def change_view(self, request, *args, **kwargs):
+ request.is_add_view = False
+ return super(GetFormsetsArgumentCheckingAdmin, self).change_view(request, *args, **kwargs)
+
+ def get_formsets_with_inlines(self, request, obj=None):
+ if request.is_add_view and obj is not None:
+ raise Exception("'obj' passed to get_formsets_with_inlines wasn't None during add_view")
+ if not request.is_add_view and obj is None:
+ raise Exception("'obj' passed to get_formsets_with_inlines was None during change_view")
+ return super(GetFormsetsArgumentCheckingAdmin, self).get_formsets_with_inlines(request, obj)
+
+
site = admin.AdminSite(name="admin")
site.register(Article, ArticleAdmin)
site.register(CustomArticle, CustomArticleAdmin)
@@ -934,6 +956,8 @@ site.register(StumpJoke)
site.register(Recipe)
site.register(Ingredient)
site.register(NotReferenced)
+site.register(ExplicitlyProvidedPK, GetFormsetsArgumentCheckingAdmin)
+site.register(ImplicitlyGeneratedPK, GetFormsetsArgumentCheckingAdmin)
# Register core models we need in our tests
from django.contrib.auth.models import User, Group