0002-api-apply-users-query-to-all-text-fields-8851.patch
tests/test_api.py | ||
---|---|---|
649 | 649 | |
650 | 650 |
resp = get_app(pub).get(sign_uri('/api/users/?q=foobar')) |
651 | 651 |
assert len(resp.json['data']) == 0 |
652 | ||
653 |
from wcs.admin.settings import UserFieldsFormDef |
|
654 |
formdef = UserFieldsFormDef(pub) |
|
655 |
formdef.fields.append(fields.StringField(id='3', label='test', type='string')) |
|
656 |
formdef.store() |
|
657 | ||
658 |
local_user.form_data = {'3': 'HELLO'} |
|
659 |
local_user.set_attributes_from_formdata(local_user.form_data) |
|
660 |
local_user.store() |
|
661 | ||
662 |
resp = get_app(pub).get(sign_uri('/api/users/?q=HELLO')) |
|
663 |
assert len(resp.json['data']) == 1 |
wcs/api.py | ||
---|---|---|
496 | 496 |
criterias = [] |
497 | 497 |
query = get_request().form.get('q') |
498 | 498 |
if query: |
499 |
criterias.append(st.Or([st.ILike('name', query), st.ILike('email', query)])) |
|
499 |
from admin.settings import UserFieldsFormDef |
|
500 |
formdef = UserFieldsFormDef() |
|
501 |
criteria_fields = [st.ILike('name', query), st.ILike('email', query)] |
|
502 |
for field in formdef.fields: |
|
503 |
if field.type in ('string', 'text', 'email'): |
|
504 |
criteria_fields.append(st.ILike('f%s' % field.id, query)) |
|
505 |
criterias.append(st.Or(criteria_fields)) |
|
500 | 506 | |
501 | 507 |
def as_dict(user): |
502 | 508 |
user_info = user.get_substitution_variables(prefix='') |
wcs/users.py | ||
---|---|---|
180 | 180 |
return variables |
181 | 181 |
get_substitution_variables_list = classmethod(get_substitution_variables_list) |
182 | 182 | |
183 |
def __getattr__(self, attr): |
|
184 |
if attr in self.__dict__: |
|
185 |
return self.__dict__[attr] |
|
186 |
if attr[0] == 'f' and (self.__dict__['form_data'] and attr[0] == 'f' and |
|
187 |
self.__dict__['form_data']): |
|
188 |
return self.__dict__['form_data'].get(attr[1:]) |
|
189 |
return super(User, self).__getattr__(attr) |
|
190 | ||
191 | ||
183 | 192 |
Substitutions.register('session_user', category=N_('User'), comment=N_('Session User')) |
184 | 193 |
Substitutions.register('session_user_display_name', category=N_('User'), comment=N_('Session User Display Name')) |
185 | 194 |
Substitutions.register('session_user_email', category=N_('User'), comment=N_('Session User Email')) |
186 |
- |