Skip to content
Snippets Groups Projects
Commit 0d156fc2 authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'fix-admin-user-search' into 'master'

Fix search in user admin

Closes #964

See merge request !1637
parents a3fa94b3 85283285
No related branches found
No related tags found
1 merge request!1637Fix search in user admin
......@@ -4,6 +4,7 @@ from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import ReadOnlyPasswordHashField
from django.contrib.auth.models import Group as BaseGroup
from django.contrib.contenttypes.admin import GenericTabularInline
from django.db.models.functions import Collate
from enumfields.admin import EnumFieldListFilter
from arkindex.users.models import Group, OAuthCredentials, Right, User, UserScope
......@@ -76,10 +77,18 @@ class UserAdmin(BaseUserAdmin):
'fields': ('email', 'password1', 'password2')}
),
)
search_fields = ('email',)
search_fields = ('searchable_email',)
ordering = ('-created', 'email',)
filter_horizontal = ()
def get_queryset(self, request):
qs = super().get_queryset(request)
# Django's search uses ILIKE, but LIKE is not supported in PostgreSQL with nondeterministic collations.
# We are using a case-insensitive collation to get unique case-insensitive emails, so to search properly,
# we first have to set the collation back to its default value, making it case-sensitive again;
# since Django uses ILIKE, it will be case-insensitive anyway.
return qs.annotate(searchable_email=Collate('email', 'default'))
class UserScopeAdmin(admin.ModelAdmin):
list_display = ('user', 'scope')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment