0001-jsondatastore-attribute-filter-on-list-endpoint-3578.patch
passerelle/apps/jsondatastore/models.py | ||
---|---|---|
88 | 88 |
objects = JsonData.objects.filter(datastore=self) |
89 | 89 |
if name_id is not None: |
90 | 90 |
objects = objects.filter(name_id=name_id) |
91 |
for key, value in kwargs.items(): |
|
92 |
objects = [o for o in objects if o.content.get(key) == value] |
|
91 | 93 |
return {'data': [x.to_json() for x in objects]} |
92 | 94 | |
93 | 95 |
@endpoint(perm='can_access', methods=['post'], name='data', |
tests/test_jsondatastore.py | ||
---|---|---|
193 | 193 |
resp = app.get('/jsondatastore/foobar/data/') |
194 | 194 |
assert resp.json['data'][0]['creation_datetime'] == encoder.default(creation_datetime) |
195 | 195 |
assert resp.json['data'][0]['last_update_datetime'] == encoder.default(last_update_datetime) |
196 | ||
197 | ||
198 |
def test_jsondatastore_list_by_attribute_filter(app, jsondatastore): |
|
199 |
resp = app.post_json('/jsondatastore/foobar/data/create?name_id=name1', |
|
200 |
params={'key1': 'val1', 'key2': 'foo'}) |
|
201 |
uuid1 = resp.json['id'] |
|
202 |
resp = app.post_json('/jsondatastore/foobar/data/create?name_id=name2', |
|
203 |
params={'key1': 'val1', 'key2': 'val2'}) |
|
204 |
uuid2 = resp.json['id'] |
|
205 |
resp = app.post_json('/jsondatastore/foobar/data/create?name_id=name1', |
|
206 |
params={'key1': 'val1', 'key2': 'val2'}) |
|
207 |
uuid3 = resp.json['id'] |
|
208 | ||
209 |
resp = app.get('/jsondatastore/foobar/data/', |
|
210 |
params={'key2': 'foo'}) |
|
211 |
assert [d['id'] for d in resp.json['data']] == [uuid1] |
|
212 | ||
213 |
resp = app.get('/jsondatastore/foobar/data/', |
|
214 |
params={'key1': 'val1', 'key2': 'val2'}) |
|
215 |
assert sorted([d['id'] for d in resp.json['data']]) == sorted([uuid2, uuid3]) |
|
216 | ||
217 |
resp = app.get('/jsondatastore/foobar/data/?name_id=name1', |
|
218 |
params={'key2': 'val2'}) |
|
219 |
assert [d['id'] for d in resp.json['data']] == [uuid3] |
|
220 | ||
221 |
resp = app.get('/jsondatastore/foobar/data/', |
|
222 |
params={'key3': ''}) |
|
223 |
assert [d['id'] for d in resp.json['data']] == [] |
|
196 |
- |