From b485fd824d9d37af2d54e80e1892cec05ace8af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 15 Nov 2015 12:57:40 +0100 Subject: [PATCH] api: use full text search in users API when available (#8984) --- wcs/api.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/wcs/api.py b/wcs/api.py index 0ca41d9..ceb78bc 100644 --- a/wcs/api.py +++ b/wcs/api.py @@ -503,13 +503,16 @@ class ApiUsersDirectory(Directory): criterias = [] query = get_request().form.get('q') if query: - from admin.settings import UserFieldsFormDef - formdef = UserFieldsFormDef() - criteria_fields = [st.ILike('name', query), st.ILike('email', query)] - for field in formdef.fields: - if field.type in ('string', 'text', 'email'): - criteria_fields.append(st.ILike('f%s' % field.id, query)) - criterias.append(st.Or(criteria_fields)) + if not get_publisher().is_using_postgresql(): + from admin.settings import UserFieldsFormDef + formdef = UserFieldsFormDef() + criteria_fields = [st.ILike('name', query), st.ILike('email', query)] + for field in formdef.fields: + if field.type in ('string', 'text', 'email'): + criteria_fields.append(st.ILike('f%s' % field.id, query)) + criterias.append(st.Or(criteria_fields)) + else: + criterias.append(st.FtsMatch(query)) def as_dict(user): user_info = user.get_substitution_variables(prefix='') -- 2.6.2