From 9d67b8bba9d0f6fd39f64881f6fb3593f4ce00ae Mon Sep 17 00:00:00 2001 From: Branson Stephens <branson.stephens@ligo.org> Date: Fri, 26 Sep 2014 11:38:45 -0500 Subject: [PATCH] I think I fixed the query parser to use pipeline and search rather than analysisType, but I havent' fixed the documentation yet. --- gracedb/query.py | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/gracedb/query.py b/gracedb/query.py index 0ed83ae33..a73cfe91e 100644 --- a/gracedb/query.py +++ b/gracedb/query.py @@ -38,8 +38,8 @@ encodeType = dict( [(x[0],x[0]) for x in models.Event.ANALYSIS_TYPE_CHOICES] ) -def doType(toks): - return ("type", Q(analysisType__in=[encodeType[tok] for tok in toks])) +#def doType(toks): +# return ("type", Q(analysisType__in=[encodeType[tok] for tok in toks])) def convertToGps(dateStr): return 12 @@ -90,15 +90,28 @@ groupList = OneOrMore(group).setName("analysis group list") groupQ = (Optional(Suppress(Keyword("group:"))) + groupList) groupQ = groupQ.setParseAction(lambda toks: ("group", Q(group__name__in=toks.asList()))) +# Pipeline +pipelineNames = [pipeline.name for pipeline in models.Pipeline.objects.all()] +pipeline = Or(map(CaselessLiteral, pipelineNames)).setName("pipeline name") +pipelineList = OneOrMore(pipeline).setName("pipeline list") +pipelineQ = (Optional(Suppress(Keyword("pipeline:"))) + pipelineList) +pipelineQ = pipelineQ.setParseAction(lambda toks: ("pipeline", Q(pipeline__name__in=toks.asList()))) + +# Search +searchNames = [search.name for search in models.Search.objects.all()] +search = Or(map(CaselessLiteral, searchNames)).setName("search name") +searchList = OneOrMore(search).setName("search list") +searchQ = (Optional(Suppress(Keyword("search:"))) + searchList) +searchQ = searchQ.setParseAction(lambda toks: ("search", Q(search__name__in=toks.asList()))) # Analysis Types -atypeNames = encodeType.keys() -atype = Or(map(CaselessLiteral, atypeNames)) -atypeList = delimitedList(atype, delim='|').\ - setName("analylsis type list").\ - setResultsName("atypes") -atypeQ = (Optional(Suppress(Keyword("type:"))) + atypeList).\ - setParseAction(doType) +#atypeNames = encodeType.keys() +#atype = Or(map(CaselessLiteral, atypeNames)) +#atypeList = delimitedList(atype, delim='|').\ +# setName("analylsis type list").\ +# setResultsName("atypes") +#atypeQ = (Optional(Suppress(Keyword("type:"))) + atypeList).\ +# setParseAction(doType) # Gracedb ID gid = Suppress("G")+Word("0123456789") @@ -243,7 +256,8 @@ ifoQ = ifoListQ | nifoQ ########################### -q = (ifoQ | hasfarQ | gidQ | hidQ | tidQ | eidQ | labelQ | atypeQ | groupQ | gpsQ | createdQ | submitterQ | runQ | attributeQ).setName("query term") +#q = (ifoQ | hasfarQ | gidQ | hidQ | tidQ | eidQ | labelQ | atypeQ | groupQ | gpsQ | createdQ | submitterQ | runQ | attributeQ).setName("query term") +q = (ifoQ | hasfarQ | gidQ | hidQ | tidQ | eidQ | labelQ | searchQ | pipelineQ | groupQ | gpsQ | createdQ | submitterQ | runQ | attributeQ).setName("query term") #andTheseTags = ["attr"] andTheseTags = ["nevents"] @@ -267,11 +281,11 @@ def parseQuery(s): if "tid" in d: d["tid"] = d["tid"] & Q(group__name="Test") if "hid" in d: - d["hid"] = d["hid"] & Q(analysisType="HWINJ") + d["hid"] = d["hid"] & Q(pipeline="HardwareInjection") if "eid" in d: - d["eid"] = d["eid"] & Q(analysisType="GRB") + d["eid"] = d["eid"] & Q(group__name="External") if "id" in d: - d["id"] = d["id"] & ~Q(analysisType="HWINJ") & ~Q(analysisType="GRB") + d["id"] = d["id"] & ~Q(pipeline="HardwareInjection") & ~Q(group__name="External") if "id" in d and "hid" in d: d["id"] = d["id"] | d["hid"] del d["hid"] -- GitLab