summaryrefslogtreecommitdiff
path: root/tests/admin_views/admin.py
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2021-01-12 05:37:56 -0800
committerGitHub <noreply@github.com>2021-01-12 14:37:56 +0100
commitba31b0103442ac891fb3cb98f316781254e366c3 (patch)
treec41bf2e135811961ca80477521d6e6df5eb17624 /tests/admin_views/admin.py
parent3071660acfbdf4b5c59457c8e9dc345d5e8894c5 (diff)
Fixed #31747 -- Fixed model enumeration via admin URLs.
Co-authored-by: Carlton Gibson <carlton.gibson@noumenal.es>
Diffstat (limited to 'tests/admin_views/admin.py')
-rw-r--r--tests/admin_views/admin.py31
1 files changed, 29 insertions, 2 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index 4a72e3070f..1140f03496 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -15,10 +15,11 @@ from django.core.files.storage import FileSystemStorage
from django.core.mail import EmailMessage
from django.db import models
from django.forms.models import BaseModelFormSet
-from django.http import HttpResponse, StreamingHttpResponse
+from django.http import HttpResponse, JsonResponse, StreamingHttpResponse
from django.urls import path
from django.utils.html import format_html
from django.utils.safestring import mark_safe
+from django.views.decorators.common import no_append_slash
from .forms import MediaActionForm
from .models import (
@@ -100,7 +101,19 @@ class ArticleForm(forms.ModelForm):
model = Article
-class ArticleAdmin(admin.ModelAdmin):
+class ArticleAdminWithExtraUrl(admin.ModelAdmin):
+ def get_urls(self):
+ urlpatterns = super().get_urls()
+ urlpatterns.append(
+ path('extra.json', self.admin_site.admin_view(self.extra_json), name='article_extra_json')
+ )
+ return urlpatterns
+
+ def extra_json(self, request):
+ return JsonResponse({})
+
+
+class ArticleAdmin(ArticleAdminWithExtraUrl):
list_display = (
'content', 'date', callable_year, 'model_year', 'modeladmin_year',
'model_year_reversed', 'section', lambda obj: obj.title,
@@ -1181,5 +1194,19 @@ class ArticleAdmin9(admin.ModelAdmin):
return obj is None
+class ActorAdmin9(admin.ModelAdmin):
+ def get_urls(self):
+ # Opt-out of append slash for single model.
+ urls = super().get_urls()
+ for pattern in urls:
+ pattern.callback = no_append_slash(pattern.callback)
+ return urls
+
+
site9 = admin.AdminSite(name='admin9')
site9.register(Article, ArticleAdmin9)
+site9.register(Actor, ActorAdmin9)
+
+site10 = admin.AdminSite(name='admin10')
+site10.final_catch_all_view = False
+site10.register(Article, ArticleAdminWithExtraUrl)