Skip to content

Toolbar text filters are case-sensitive on PostgreSQL (__contains instead of __icontains) #3121

@amasolov

Description

@amasolov

Summary

All toolbar text search filters across the platform UI use Django's __contains lookup, which produces a case-sensitive LIKE on PostgreSQL. Users expect search to be case-insensitive (and it was in AAP 2.4).

For example, on the Users page, searching for the email david.levene@example.com returns no results if the stored value is David.LeVene@example.com.

Affected areas

  • Platform: users list, organisation users list, authenticator mappings
  • AWX: roles list, resource selection in role wizard
  • EDA: roles list
  • Hub: users list, roles list, tasks list, resource selection in role wizard
  • Common: access/role assignment lists (role name filter)

Root cause

Toolbar filter hooks set query: 'field__contains' instead of query: 'field__icontains'. On PostgreSQL, __contains maps to LIKE (case-sensitive) while __icontains maps to ILIKE (case-insensitive).

Related

  • Jira: AAP-42092
  • Reproduced on AAP 2.6 (gateway API confirms __contains is case-sensitive, __icontains works correctly)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions