def execute(macro, args, formatter): if not formatter: formatter = macro.formatter # get number of wanted links try: links = max(int(args), 1) except StandardError: links = 1 # select the pages from the page list random_list = wikiutil.getRandomPages(macro.request) pages = [] while len(pages) < links and random_list: pagename = random.choice(random_list) page = Page(pagename, macro.request) if macro.request.user.may.read(page) and page.exists() and not page.isRedirect(): if page.proper_name()[0:6] != 'Users/' and page.proper_name()[-5:] != '/Talk': pages.append(page) # return a single page link if links == 1: return pages[0].link_to() # return a list of page links pages.sort() result = [macro.formatter.bullet_list(1)] for page in pages: result.append("%s%s%s" % (macro.formatter.listitem(1), page.link_to(), macro.formatter.listitem(0))) result.append(macro.formatter.bullet_list(0)) return ''.join(result)
def execute(macro, args, formatter=None): if not formatter: formatter = macro.formatter cursor = macro.request.cursor cursor.execute(""" SELECT c.propercased_name, count(c.source_pagename) as cnt FROM ( SELECT curPages.propercased_name, links.source_pagename FROM curPages LEFT JOIN links on (links.source_pagename=curPages.name and links.wiki_id=%(wiki_id)s and curPages.wiki_id=%(wiki_id)s) WHERE curPages.wiki_id=%(wiki_id)s ) as c GROUP BY c.propercased_name ORDER BY cnt""", {'wiki_id': macro.request.config.wiki_id}) results = cursor.fetchall() old_count = -1 for entry in results: name = entry[0] lower_name = name.lower() if skip_page(name): continue new_count = entry[1] page = Page(name, macro.request) if new_count == 0 and page.isRedirect(): continue if new_count != old_count: old_count = new_count macro.request.write(macro.formatter.heading(2, str(new_count))) else: macro.request.write(", ") macro.request.write(page.link_to(know_status=True, know_status_exists=True)) return ''
def execute(macro, args, formatter=None): if not formatter: formatter = macro.formatter _ = macro.request.getText # prevent recursive calls global _guard if _guard: return "" # flush the request output because orphaned may take time to generate macro.request.flush() # delete all linked pages from a dict of all pages _guard = 1 cursor = macro.request.cursor cursor.execute( """ SELECT curPages.propercased_name FROM curPages LEFT JOIN links on (links.destination_pagename=curPages.name and links.wiki_id=%(wiki_id)s and curPages.wiki_id=%(wiki_id)s ) WHERE curPages.wiki_id=%(wiki_id)s and links.destination_pagename is NULL""", {"wiki_id": macro.request.config.wiki_id}, ) orphanednames_result = cursor.fetchall() _guard = 0 # check for the extreme case if not orphanednames_result: return "<p>%s</p>" % _("No orphaned pages in this wiki.") # return a list of page links from Sycamore.Page import Page redirects = [] pages = [] show_users = showUsers(macro.request) for entry in orphanednames_result: name = entry[0] if name.startswith(config.user_page_prefix) and not show_users: continue page = Page(name, macro.request) is_redirect = False # if not macro.request.user.may.read(name): continue if page.isRedirect(): redirects.append(page) else: pages.append(page) # usually 'Orphaned Pages' or something such pagename = macro.request.getPathinfo()[1:] if not show_users: macro.request.write( '<div style="float: right;">' '<div class="actionBoxes"><span>' "%s" "</span></div></div>" % wikiutil.link_tag(macro.request, pagename + "?show_users=true", "show users") ) else: macro.request.write( '<div style="float: right;">' '<div class="actionBoxes"><span>' "%s" "</span></div></div>" % wikiutil.link_tag(macro.request, pagename, "hide users") ) macro.request.write(macro.formatter.heading(2, "Orphans")) macro.request.write(macro.formatter.bullet_list(1)) for page in pages: macro.request.write(macro.formatter.listitem(1)) macro.request.write(page.link_to(know_status=True, know_status_exists=True)) macro.request.write(macro.formatter.listitem(0)) macro.request.write(macro.formatter.bullet_list(0)) macro.request.write(macro.formatter.heading(2, "Orphaned Redirects")) macro.request.write(macro.formatter.bullet_list(1)) for page in redirects: macro.request.write(macro.formatter.listitem(1)) macro.request.write(page.link_to(know_status=True, know_status_exists=True)) macro.request.write(macro.formatter.listitem(0)) macro.request.write(macro.formatter.bullet_list(0)) return "" # macros must return strings