def query(self, req, query='', attribute_handlers=None): """Returns a sequence of (resource, tags) tuples matching a query. Query syntax is described in tractags.query. :param attribute_handlers: Register additional query attribute handlers. See Query documentation for more information. """ def realm_handler(_, node, context): return query.match(node, [context.realm]) all_attribute_handlers = { 'realm': realm_handler, } all_attribute_handlers.update(attribute_handlers or {}) query = Query(query, attribute_handlers=all_attribute_handlers) providers = set() for m in REALM_RE.finditer(query.as_string()): realm = m.group(1) providers.add(self._get_provider(realm)) if not providers: providers = self.tag_providers query_tags = set(query.terms()) for provider in providers: self.env.log.debug('Querying ' + repr(provider)) for resource, tags in provider.get_tagged_resources( req, query_tags) or []: if query(tags, context=resource): yield resource, tags
def query(self, req, query='', attribute_handlers=None): """Return a sequence of (resource, tags) tuples matching a query. Query syntax is described in tractags.query. :param attribute_handlers: Register additional query attribute handlers. See Query documentation for more information. """ def realm_handler(_, node, context): return query.match(node, [context.realm]) all_attribute_handlers = { 'realm': realm_handler, } all_attribute_handlers.update(attribute_handlers or {}) if re.search( r'(expression|tagspace|tagspaces|operation|showheadings' '|expression)=', query): message = Markup( 'You seem to be using an old Tag query. ' 'Try using the <a href="%s">new syntax</a> in your ' '<strong>ListTagged</strong> macro.', req.href('tags')) add_warning(req, message) query = Query(query, attribute_handlers=all_attribute_handlers) query_tags = set(query.terms()) for provider in self.tag_providers: for resource, tags in provider.get_tagged_resources( req, query_tags): if query(tags, context=resource): yield resource, tags
def query(self, req, query='', attribute_handlers=None): """Returns a sequence of (resource, tags) tuples matching a query. Query syntax is described in tractags.query. :param attribute_handlers: Register additional query attribute handlers. See Query documentation for more information. """ def realm_handler(_, node, context): return query.match(node, [context.realm]) all_attribute_handlers = { 'realm': realm_handler, } all_attribute_handlers.update(attribute_handlers or {}) query = Query(query, attribute_handlers=all_attribute_handlers) providers = set() for m in REALM_RE.finditer(query.as_string()): realm = m.group(1) providers.add(self._get_provider(realm)) if not providers: providers = self.tag_providers query_tags = set(query.terms()) for provider in providers: self.env.log.debug('Querying ' + repr(provider)) for resource, tags in provider.get_tagged_resources(req, query_tags) or []: if query(tags, context=resource): yield resource, tags
def query(self, req, query="", attribute_handlers=None): """Return a sequence of (resource, tags) tuples matching a query. Query syntax is described in tractags.query. :param attribute_handlers: Register additional query attribute handlers. See Query documentation for more information. """ def realm_handler(_, node, context): return query.match(node, [context.realm]) all_attribute_handlers = {"realm": realm_handler} all_attribute_handlers.update(attribute_handlers or {}) if re.search(r"(expression|tagspace|tagspaces|operation|showheadings" "|expression)=", query): message = Markup( "You seem to be using an old Tag query. " 'Try using the <a href="%s">new syntax</a> in your ' "<strong>ListTagged</strong> macro.", req.href("tags"), ) add_warning(req, message) query = Query(query, attribute_handlers=all_attribute_handlers) query_tags = set(query.terms()) for provider in self.tag_providers: for resource, tags in provider.get_tagged_resources(req, query_tags): if query(tags, context=resource): yield resource, tags