From b717eee2f4b751ea767610c1492be5b50c421b6a Mon Sep 17 00:00:00 2001 From: Cory Francis Myers Date: Thu, 27 Jan 2022 15:25:50 -0800 Subject: [PATCH 1/2] adds ARIA-{INVALID,DESCRIBEDBY} annotations for WTForms validation errors --- .../journalist_templates/admin_add_user.html | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/securedrop/journalist_templates/admin_add_user.html b/securedrop/journalist_templates/admin_add_user.html index 930578b44b..47cce415ec 100644 --- a/securedrop/journalist_templates/admin_add_user.html +++ b/securedrop/journalist_templates/admin_add_user.html @@ -11,10 +11,16 @@

Add User

- {{ form.username() }} + {% set aria_attributes = {} %} + {% if form.username.errors %} + {% set _dummy = aria_attributes.update({'aria-describedby': 'username-errors', 'aria-invalid': 'true'}) %} + {% endif %} + {{ form.username(**aria_attributes) }} + {% for error in form.username.errors %} {{ error }} {% endfor %} +
    @@ -26,17 +32,29 @@

    Add User

    - {{ form.first_name() }} + {% set aria_attributes = {} %} + {% if form.first_name.errors %} + {% set _dummy = aria_attributes.update({'aria-describedby': 'first-name-errors', 'aria-invalid': 'true'}) %} + {% endif %} + {{ form.first_name(**aria_attributes) }} + {% for error in form.first_name.errors %} {{ error }} {% endfor %} +
    - {{ form.last_name() }} + {% set aria_attributes = {} %} + {% if form.last_name.errors %} + {% set _dummy = aria_attributes.update({'aria-describedby': 'last-name-errors', 'aria-invalid': 'true'}) %} + {% endif %} + {{ form.last_name(**aria_attributes) }} + {% for error in form.last_name.errors %} {{ error }} {% endfor %} +
      @@ -46,20 +64,32 @@

      Add User

    {{ gettext("The user's password will be:") }} {{ password }}

    - {{ form.is_admin(id="is-admin") }} + {% set aria_attributes = {} %} + {% if form.is_admin.errors %} + {% set _dummy = aria_attributes.update({'aria-describedby': 'is-admin-errors', 'aria-invalid': 'true'}) %} + {% endif %} + {{ form.is_admin(id="is-admin", **aria_attributes) }} + {% for error in form.is_admin.errors %} {{ error }} {% endfor %} +
    - {{ form.is_hotp(id="is-hotp") }} + {% set aria_attributes = {} %} + {% if form.is_hotp.errors or form.otp_secret.errors %} + {% set _dummy = aria_attributes.update({'aria-describedby': 'otp-errors', 'aria-invalid': 'true'}) %} + {% endif %} + {{ form.is_hotp(id="is-hotp", **aria_attributes) }} - {{ form.otp_secret(placeholder=gettext('HOTP Secret'), size="60") }} + {{ form.otp_secret(placeholder=gettext('HOTP Secret'), size="60", **aria_attributes) }} + {% for error in form.is_hotp.errors + form.otp_secret.errors %} - {{ error }}
    + {{ error }} {% endfor %} +