matrix42: rename search_filter to filter (#83112)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Thomas NOËL 2023-11-03 15:06:41 +01:00
parent 11d3bd5a9b
commit e2a45ea01b
2 changed files with 34 additions and 9 deletions

View File

@ -105,6 +105,9 @@ class Matrix42(BaseResource, HTTPResource):
'description': _('Columns in the result set, separated by comma'),
'example_value': 'ID,[Expression-ObjectID] as EOID,LastName,FirstName,MailAddress',
},
'filter': {
'description': _('Filter: "WHERE search_filter"'),
},
'template': {
'description': _(
'Django template for text attribute - if none, use DisplayString|DisplayName|Name'
@ -116,10 +119,7 @@ class Matrix42(BaseResource, HTTPResource):
'example_value': '{{ ID }}',
},
'search_column': {
'description': _('Search column: "where search_column LIKE \'%q%\'"'),
},
'search_filter': {
'description': _('Search filter: "where search_column LIKE \'%q%\' and search_filter"'),
'description': _('Search column: "WHERE search_column LIKE \'%q%\' (AND search_filter)"'),
},
'q': {'description': _('Search text (needs a search_column)')},
'id': {'description': _('Get the whole fragment with this ID')},
@ -130,10 +130,10 @@ class Matrix42(BaseResource, HTTPResource):
request,
ddname,
columns=None,
filter=None,
template=None,
id_template=None,
search_column=None,
search_filter=None,
q=None,
id=None,
):
@ -164,8 +164,11 @@ class Matrix42(BaseResource, HTTPResource):
params['columns'] = columns
if q is not None:
params['where'] = "%s LIKE '%%%s%%'" % (search_column, q.replace("'", "''"))
if search_filter:
params['where'] += ' AND %s' % search_filter
if filter:
params['where'] += ' AND %s' % filter
elif filter:
params['where'] = filter
results = self.request(uri, params=params).get('Result') or []
for result in results:
add_id_and_text(result)

View File

@ -112,8 +112,30 @@ def test_matrix42_fragment(mocked_request, app, matrix42):
assert resp.json['data'][0]['id'] == 'id:a9386c3e-cb7a-ed11-a3bb-000d3aaa0172'
assert resp.json['data'][0]['text'] == 'ds:User1, Leo'
# filter more
params['search_filter'] = '1=1'
# filter
del params['q']
params['filter'] = '1=1'
mocked_request.reset_mock()
mocked_request.side_effect = [
FakedResponse(content=TOKEN, status_code=200),
FakedResponse(content=USERS, status_code=200),
]
resp = app.get(endpoint, params=params, status=200)
_, get_users = mocked_request.call_args_list
assert get_users[0] == (
'GET',
'https://matrix42.example.net/api/data/fragments/SPSUserClassBase/schema-info',
)
assert get_users[1]['params'] == {
'columns': 'DisplayString',
'where': '1=1',
}
assert resp.json['err'] == 0
assert len(resp.json['data']) == 2
# filter & q
params['q'] = 'User'
params['filter'] = '1=1'
mocked_request.reset_mock()
mocked_request.side_effect = [
FakedResponse(content=TOKEN, status_code=200),