[issue2551051] Transitive filters don't work in rest interface
John Rouillard <[email protected]>
| Newsgroups | gmane.comp.bug-tracking.roundup.devel |
|---|---|
| Message-ID | <[email protected]> |
New submission from John Rouillard:
Search filters in roundup can be transitive. From hyperdb.py:
... e.g. you can search
for all issues where a message was added by a certain user in
the last week with a filterspec of
{'messages.author' : '42', 'messages.creation' : '.-1w;'}
so in theory I should be able to submit a rest call as:
issue?messages.author=42&messages.creation=.-1w
however the current code balks at that. Stating "messages.author"
isn't a valid property of issue. I wonder if we should rework the code
in rest.py that does:
try:
prop = class_obj.getprops()[key]
except KeyError:
raise UsageError("Field %s is not valid for %s class."%(
key, class_name))
to something like:
try:
prop = class_obj.getprops()[key.split('.')[0]]
except: ...
This should result in:
obj_list = class_obj.filter(None, filter_props)
getting filter_props like:
{'messages.author', [1]}
which I think is properly handled.
Two questions:
1) Does this seem the right thing to do? Should we support
transitive searching in the rest interface? I don't see any
reason it's not restful. It certainly beats searching
messages?author=42&creation=.-1w then searching
issues?messages=123,345,678 etc. (speaking of which
curl 'https://....net/demo/rest/data/issue/?messages=1,2'
returns all messages for some reason, so we may have
another bug.)
2) Does this seem to be the right way to implement it? Given a
filter of link.link.link.property, should we check the whole link
chain and validate the property, or do we just rely on filter
raising an error if the filter is nonsense?
----------
keywords: rest
messages: 6574
nosy: rouilj
severity: normal
status: new
title: Transitive filters don't work in rest interface
_________________________________________________
Roundup tracker <[email protected]>
<https://issues.roundup-tracker.org/issue2551051>
_________________________________________________