def _query_by_tag(wlib, tag, sort): col, order = SORT.parse_token(sort) positions = query_wlib.query_by_tag(wlib, tag) # build and sort webItems webItems = [] if col == SORT.TITLE or col == SORT.DATE: lst = [] for pos in positions: for _,_,page in pos.items: if col == SORT.TITLE: key = page.name.lower() else: key = page.created lst.append((key,WebItemNode(page))) lst.sort(reverse=(order==SORT.DESC)) webItems = [w for _,w in lst] else: # order by tag (default) for pos in positions: tagNode = WebItemTagNode(pos.tag) tagNode.prefix = pos.prefix webItems.append(tagNode) for _,_,page in pos.items: webItems.append(WebItemNode(page)) return webItems
def _query_by_tag(wlib, tag): webItems = [] positions = query_wlib.query_by_tag(wlib, tag) for pos in positions: tagNode = WebItemTagNode(pos.tag) tagNode.prefix = pos.prefix webItems.append(tagNode) for _,_,page in pos.items: webItems.append(WebItemNode(page)) return webItems
def test_query_by_tags(self): wlib = self.store.wlib ktag = wlib.tags.getByName('Kremlin') positions = query_wlib.query_by_tag(wlib, ktag) self.assertEqual(len(positions), 5) # 5 tags under Kremlin self.assertEqual(positions[0].tag.name, u'Kremlin') self.assertEqual(positions[1].tag.name, u'Русский') self.assertEqual(positions[2].tag.name, u'Français') self.assertEqual(positions[3].tag.name, u'日本語') self.assertEqual(positions[4].tag.name, u'English') self.assertEqual(len(positions[0].items), 0) self.assertEqual(len(positions[1].items), 1) self.assertEqual(len(positions[2].items), 1) self.assertEqual(len(positions[3].items), 1) self.assertEqual(len(positions[4].items), 1)