summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorDurval Carvalho <durvalcsouza@outlook.com>2023-01-31 15:05:03 -0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-02-16 08:29:40 +0100
commit85366fbca723c9b37d0ac9db1d44e3f1cb188db2 (patch)
tree4c639dbd7d431b14d9dea655eb184f1cbd027f73 /django
parent6bdc3c58b65eb32fd63cd41849f00a17a36b4473 (diff)
Fixed #34045 -- Improved accessibility of selecting items in admin changelist.
This adds "aria-label".
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/helpers.py3
-rw-r--r--django/contrib/admin/options.py9
-rw-r--r--django/contrib/admin/templatetags/admin_list.py6
3 files changed, 11 insertions, 7 deletions
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py
index b038b3ebbb..90ca7affc8 100644
--- a/django/contrib/admin/helpers.py
+++ b/django/contrib/admin/helpers.py
@@ -36,9 +36,6 @@ class ActionForm(forms.Form):
)
-checkbox = forms.CheckboxInput({"class": "action-select"}, lambda value: False)
-
-
class AdminForm:
def __init__(
self,
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index ed70f93628..1e08458fe1 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -13,7 +13,6 @@ from django.contrib.admin.checks import (
InlineModelAdminChecks,
ModelAdminChecks,
)
-from django.contrib.admin.decorators import display
from django.contrib.admin.exceptions import DisallowedModelAdminToField
from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
from django.contrib.admin.utils import (
@@ -962,12 +961,16 @@ class ModelAdmin(BaseModelAdmin):
action_flag=DELETION,
)
- @display(description=mark_safe('<input type="checkbox" id="action-toggle">'))
def action_checkbox(self, obj):
"""
A list_display column containing a checkbox widget.
"""
- return helpers.checkbox.render(helpers.ACTION_CHECKBOX_NAME, str(obj.pk))
+ attrs = {
+ "class": "action-select",
+ "aria-label": format_html(_("Select this object for an action - {}"), obj),
+ }
+ checkbox = forms.CheckboxInput(attrs, lambda value: False)
+ return checkbox.render(helpers.ACTION_CHECKBOX_NAME, str(obj.pk))
@staticmethod
def _get_action_description(func, name):
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index ee6f3a7666..761a64ae5f 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -96,8 +96,12 @@ def result_headers(cl):
# if the field is the action checkbox: no sorting and special class
if field_name == "action_checkbox":
+ aria_label = _("Select all objects on this page for an action")
yield {
- "text": text,
+ "text": mark_safe(
+ f'<input type="checkbox" id="action-toggle" '
+ f'aria-label="{aria_label}">'
+ ),
"class_attrib": mark_safe(' class="action-checkbox-column"'),
"sortable": False,
}