diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2021-01-12 05:37:56 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-12 14:37:56 +0100 |
| commit | ba31b0103442ac891fb3cb98f316781254e366c3 (patch) | |
| tree | c41bf2e135811961ca80477521d6e6df5eb17624 /tests/admin_views/admin.py | |
| parent | 3071660acfbdf4b5c59457c8e9dc345d5e8894c5 (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.py | 31 |
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) |
