1
0
mirror of https://github.com/django/django.git synced 2025-10-23 21:59:11 +00:00

Refs #35189 -- Improved admin fieldset's accessibility by setting aria-labelledby.

Before this change, HTML <fieldset> elements in the admin site did not
have an associated label to describe them. This commit defines a unique
HTML id for the heading labeling a fieldset, and sets its
aria-labelledby property to link the heading with the fieldset.
This commit is contained in:
Marijke Luttekes
2024-05-21 22:09:26 -03:00
committed by nessita
parent 9c5fe93349
commit 01ed59f753
7 changed files with 478 additions and 59 deletions

View File

@@ -40,6 +40,8 @@ from .models import (
OutfitItem,
ParentModelWithCustomPk,
Person,
Photo,
Photographer,
Poll,
Profile,
ProfileCollection,
@@ -98,6 +100,57 @@ class AuthorAdmin(admin.ModelAdmin):
]
class PhotoInlineMixin:
model = Photo
extra = 2
fieldsets = [
(None, {"fields": ["image", "title"]}),
(
"Details",
{"fields": ["description", "creation_date"], "classes": ["collapse"]},
),
(
"Details", # Fieldset name intentionally duplicated
{"fields": ["update_date", "updated_by"]},
),
]
class PhotoTabularInline(PhotoInlineMixin, admin.TabularInline):
pass
class PhotoStackedExtra2Inline(PhotoInlineMixin, admin.StackedInline):
pass
class PhotoStackedExtra3Inline(PhotoInlineMixin, admin.StackedInline):
extra = 3
class PhotoStackedCollapsibleInline(PhotoInlineMixin, admin.StackedInline):
fieldsets = []
classes = ["collapse"]
class PhotographerAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ["firstname", "fullname"]}),
("Advanced options", {"fields": ["nationality", "residency"]}),
(
"Advanced options", # Fieldset name intentionally duplicated
{"fields": ["siblings", "children"], "classes": ["collapse"]},
),
]
inlines = [
PhotoTabularInline,
PhotoTabularInline,
PhotoStackedExtra2Inline,
PhotoStackedExtra3Inline,
PhotoStackedCollapsibleInline,
]
class InnerInline(admin.StackedInline):
model = Inner
can_delete = False
@@ -454,6 +507,7 @@ site.register(Teacher, TeacherAdmin)
site.register(Chapter, inlines=[FootNoteNonEditableInlineCustomForm])
site.register(OutfitItem, inlines=[WeaknessInlineCustomForm])
site.register(Person, inlines=[AuthorTabularInline, FashonistaStackedInline])
site.register(Photographer, PhotographerAdmin)
site.register(Course, ClassAdminStackedHorizontal)
site.register(CourseProxy, ClassAdminStackedVertical)
site.register(CourseProxy1, ClassAdminTabularVertical)