Message6574
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? |
|
Date |
User |
Action |
Args |
2019-07-11 02:38:23 | rouilj | set | recipients:
+ rouilj |
2019-07-11 02:38:23 | rouilj | link | issue2551051 messages |
2019-07-11 02:38:23 | rouilj | create | |
|