def search(cls, search):
if search is None or len(search) == 0:
return []
query = Tool.query.outerjoin(EDAMOperation, Tool.edam_operations).join(ToolVersion).join(Instance, ToolVersion.instances)
nodes = parse_search_query(search)
for node in nodes:
if type(node) == ComparisonNode:
key = node[0]
value = u" ".join(node[2]).lower()
if key == u"topic":
query = query.filter(func.lower(EDAMOperation.label) == value)
elif key == u"instance":
query = query.filter(func.lower(Instance.brand) == value)
else:
# unknown key
return []
else:
term = "%{0}%".format(" ".join(node).lower())
query = query.filter(Tool.name.ilike(term) | Tool.description.ilike(term) | Tool.display_name.ilike(term))
return query.all()
评论列表
文章目录