diff --git a/gracedb/superevents/query.py b/gracedb/superevents/query.py index d42bee32f23ef836f10947d6c2342f9acf04793b..62fdb4c2cf1b4cebc502b9021801ea8fd042aa48 100644 --- a/gracedb/superevents/query.py +++ b/gracedb/superevents/query.py @@ -21,6 +21,7 @@ from pyparsing import Word, nums, Literal, CaselessLiteral, delimitedList, \ # Set up logger logger = logging.getLogger(__name__) + # Function for parsing matched superevent ID tokens def parse_superevent_id(name, toks, filter_prefix=None): # toks = matched superevent id @@ -119,6 +120,22 @@ parameter_dicts = { 'value': Or([CaselessLiteral(b) for b in ['true', 'false']]), 'parseAction': lambda toks: ("is_gw", Q(is_gw=(toks[0] == "true"))), }, + # is_public: true|false OR is_exposed: true|false + 'is_public': { + 'keyword': ['is_public', 'is_exposed'], + 'keywordOptional': False, + 'value': Or([CaselessLiteral(b) for b in ['true', 'false']]), + 'parseAction': lambda toks: ("is_exposed", + Q(is_exposed=(toks[0] == "true"))), + }, + # status: internal|public OR internal|public + 'public': { + 'keyword': 'status', + 'keywordOptional': True, + 'value': Or([CaselessLiteral(b) for b in ['public', 'internal']]), + 'parseAction': lambda toks: ("is_exposed", + Q(is_exposed=(toks[0] == "public"))), + }, # created: yesterday .. now (uses events.nltime.nltimeExpression) 'created_nl': { 'keyword': 'created', @@ -153,7 +170,6 @@ parameter_dicts = { }, } - # Compile a list of expressions to try to match expr_list = [] for k,p in parameter_dicts.iteritems(): diff --git a/gracedb/templates/search/query_help_frag.html b/gracedb/templates/search/query_help_frag.html index 9e4477a6422cf95d148adf432ac84d9f29f10257..e9e13519729780780e5f17312732b6e746bb29d4 100644 --- a/gracedb/templates/search/query_help_frag.html +++ b/gracedb/templates/search/query_help_frag.html @@ -151,4 +151,14 @@ <h4>By label</h4> Same as for events. + + <h4>By public status</h4> + Use the <code>is_public:</code> or <code>is_exposed:</code> keywords: + <ul> + <li>is_public: True</li> + <li>is_exposed: True</li> + </ul> + Or, just add either "public" or "internal" to your query. + + </div>