def log_items_by_tags(cls, tags): query = '|'.join(tags) parsed_tags = get_string_tokens(query) log_items = set(map( cls.get, chain.from_iterable( [cls.tags.filter(tag) for tag in parsed_tags]))) return filter(lambda li: Expression(query, li.tags).evaluate(), log_items)
def load_by_tags(query): if isinstance(query, (list, set, tuple)): query = '|'.join(query) parsed_tags = get_string_tokens(query) r_with_tags = [DBResource.tags.filter(tag) for tag in parsed_tags] r_with_tags = set(itertools.chain(*r_with_tags)) resources = [Resource(r) for r in DBResource.multi_get(r_with_tags)] return filter(lambda n: Expression(query, n.tags).evaluate(), resources)