Mercurial > moin > 1.9
view MoinMoin/macro/RandomPage.py @ 5952:f6a74810da73
updated CHANGES
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Sun, 10 Mar 2013 15:28:04 +0100 |
parents | 1ad6243cdf06 |
children |
line wrap: on
line source
# -*- coding: iso-8859-1 -*- """ MoinMoin - RandomPage Macro @copyright: 2000 Juergen Hermann <jh@web.de> @license: GNU GPL, see COPYING for details. """ import random random.seed() from MoinMoin.Page import Page Dependencies = ["time"] def macro_RandomPage(macro, links=1): request = macro.request links = max(links, 1) # at least 1 link # Get full page unfiltered page list - very fast! all_pages = request.rootpage.getPageList(user='', exists=0) # Now select random page from the full list, and if it exists and we # can read it, save. pages = [] found = 0 while found < links and all_pages: # Take one random page from the list pagename = random.choice(all_pages) all_pages.remove(pagename) # Filter out deleted pages or pages the user may not read. page = Page(request, pagename) if page.exists() and request.user.may.read(pagename): pages.append(pagename) found += 1 if not pages: return '' f = macro.formatter # return a single page link if links == 1: name = pages[0] return (f.pagelink(1, name, generated=1) + f.text(name) + f.pagelink(0, name)) # return a list of page links pages.sort() result = [] write = result.append write(f.bullet_list(1)) for name in pages: write(f.listitem(1)) write(f.pagelink(1, name, generated=1)) write(f.text(name)) write(f.pagelink(0, name)) write(f.listitem(0)) write(f.bullet_list(0)) result = ''.join(result) return result