Projet

Général

Profil

0001-general-change-user-search-to-look-in-both-FTS-and-a.patch

Frédéric Péters, 27 novembre 2015 12:19

Télécharger (2,78 ko)

Voir les différences:

Subject: [PATCH] general: change user search to look in both FTS and actual
 fields (#9132)

 wcs/api.py                   | 19 +++++++++----------
 wcs/backoffice/management.py |  8 +++++++-
 2 files changed, 16 insertions(+), 11 deletions(-)
wcs/api.py
515 515
        criterias = []
516 516
        query = get_request().form.get('q')
517 517
        if query:
518
            if not get_publisher().is_using_postgresql():
519
                from admin.settings import UserFieldsFormDef
520
                formdef = UserFieldsFormDef()
521
                criteria_fields = [st.ILike('name', query), st.ILike('email', query)]
522
                for field in formdef.fields:
523
                    if field.type in ('string', 'text', 'email'):
524
                        criteria_fields.append(st.ILike('f%s' % field.id, query))
525
                criterias.append(st.Or(criteria_fields))
526
            else:
527
                criterias.append(st.FtsMatch(query))
518
            from admin.settings import UserFieldsFormDef
519
            formdef = UserFieldsFormDef()
520
            criteria_fields = [st.ILike('name', query), st.ILike('email', query)]
521
            for field in formdef.fields:
522
                if field.type in ('string', 'text', 'email'):
523
                    criteria_fields.append(st.ILike('f%s' % field.id, query))
524
            if get_publisher().is_using_postgresql():
525
                criteria_fields.append(st.FtsMatch(query))
526
            criterias.append(st.Or(criteria_fields))
528 527

  
529 528
        def as_dict(user):
530 529
            user_info = user.get_substitution_variables(prefix='')
wcs/backoffice/management.py
302 302
            return r.getvalue()
303 303

  
304 304
        formdef = UserFieldsFormDef()
305
        criterias = [FtsMatch(query)]
305
        criteria_fields = [ILike('name', query), ILike('email', query)]
306
        for field in formdef.fields:
307
            if field.type in ('string', 'text', 'email'):
308
                criteria_fields.append(ILike('f%s' % field.id, query))
309
        if get_publisher().is_using_postgresql():
310
            criteria_fields.append(FtsMatch(query))
311
        criterias = [Or(criteria_fields)]
306 312
        users = get_publisher().user_class.select(order_by=order_by,
307 313
                clause=criterias, limit=limit, offset=offset)
308 314
        total_count = get_publisher().user_class.count(criterias)
309
-