From c83c639ba0c67dbb0f627be3df29d1224ea92d2b Mon Sep 17 00:00:00 2001 From: Eliana Rosselli Date: Fri, 20 Oct 2023 09:42:30 -0400 Subject: [PATCH] Fixed #34909 -- Associated links in admin navigation sidebar with row descriptions. This adds aria-describedby attribute to the models' links in the admin navigation sidebar. Thanks Thibaud Colas for the review. Co-authored-by: Dara Silvera --- .../admin/templates/admin/app_list.html | 8 +++---- tests/admin_views/test_nav_sidebar.py | 3 ++- tests/admin_views/tests.py | 23 +++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/django/contrib/admin/templates/admin/app_list.html b/django/contrib/admin/templates/admin/app_list.html index 941680d89b..3b67b5feab 100644 --- a/django/contrib/admin/templates/admin/app_list.html +++ b/django/contrib/admin/templates/admin/app_list.html @@ -10,7 +10,7 @@ {% for model in app.models %} {% with model_name=model.object_name|lower %} - + {% if model.admin_url %} {{ model.name }} {% else %} @@ -19,16 +19,16 @@ {% if model.add_url %} - {% translate 'Add' %} + {% translate 'Add' %} {% else %} {% endif %} {% if model.admin_url and show_changelinks %} {% if model.view_only %} - {% translate 'View' %} + {% translate 'View' %} {% else %} - {% translate 'Change' %} + {% translate 'Change' %} {% endif %} {% elif show_changelinks %} diff --git a/tests/admin_views/test_nav_sidebar.py b/tests/admin_views/test_nav_sidebar.py index e9b367b63b..1875a2f7a1 100644 --- a/tests/admin_views/test_nav_sidebar.py +++ b/tests/admin_views/test_nav_sidebar.py @@ -111,9 +111,10 @@ class AdminSidebarTests(TestCase): self.assertContains(response, '') self.assertContains( response, - '' + '' '' "Héllos", + html=True, ) diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 98a77221b2..cb61c88941 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -1605,6 +1605,29 @@ class AdminViewBasicTest(AdminViewBasicTestCase): '
', ) + def test_aria_describedby_for_add_and_change_links(self): + response = self.client.get(reverse("admin:index")) + tests = [ + ("admin_views", "actor"), + ("admin_views", "worker"), + ("auth", "group"), + ("auth", "user"), + ] + for app_label, model_name in tests: + with self.subTest(app_label=app_label, model_name=model_name): + row_id = f"{app_label}-{model_name}" + self.assertContains(response, f'') + self.assertContains( + response, + f'Change', + ) + self.assertContains( + response, + f'Add', + ) + @override_settings( AUTH_PASSWORD_VALIDATORS=[