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)