diff options
| author | sarahboyce <sarahvboyce95@gmail.com> | 2023-04-13 11:46:47 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-04-17 14:09:38 +0200 |
| commit | 594fcc2b7427f7baf2cf1a2d7cd2be61467df0c3 (patch) | |
| tree | 9406ab96668239a7fbdee33f2efb93592db22b36 /django/contrib/admin/views | |
| parent | 57f2b935b34d148c3c0d906fc8256765004b7b77 (diff) | |
Fixed #22569 -- Made ModelAdmin.lookup_allowed() respect get_list_filter().
Thank you Simon Meers for the initial patch.
Diffstat (limited to 'django/contrib/admin/views')
| -rw-r--r-- | django/contrib/admin/views/main.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 9a130ae8a7..c99972c2bd 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -1,3 +1,4 @@ +import warnings from datetime import datetime, timedelta from django import forms @@ -31,7 +32,9 @@ from django.core.paginator import InvalidPage from django.db.models import Exists, F, Field, ManyToOneRel, OrderBy, OuterRef from django.db.models.expressions import Combinable from django.urls import reverse +from django.utils.deprecation import RemovedInDjango60Warning from django.utils.http import urlencode +from django.utils.inspect import func_supports_parameter from django.utils.timezone import make_aware from django.utils.translation import gettext @@ -174,9 +177,19 @@ class ChangeList: may_have_duplicates = False has_active_filters = False + supports_request = func_supports_parameter( + self.model_admin.lookup_allowed, "request" + ) + if not supports_request: + warnings.warn( + f"`request` must be added to the signature of " + f"{self.model_admin.__class__.__qualname__}.lookup_allowed().", + RemovedInDjango60Warning, + ) for key, value_list in lookup_params.items(): for value in value_list: - if not self.model_admin.lookup_allowed(key, value): + params = (key, value, request) if supports_request else (key, value) + if not self.model_admin.lookup_allowed(*params): raise DisallowedModelAdminLookup(f"Filtering by {key} not allowed") filter_specs = [] |
