Skip to content
Snippets Groups Projects
Select Git revision
  • 07b6b1265b73bcb65da6d12dca3c28af23e44764
  • development default protected
  • 3.2.x-stable
  • prepare
  • 6b369dc5
  • 3.1.x-stable
  • 3.0.x-stable
  • 2.4.x-stable
  • v3.2.61
  • v3.2.60
  • v3.2.59
  • v3.2.54
  • v3.2.53
  • v3.2.52
  • v3.2.51
  • v3.2.48
  • v3.2.45
  • v3.2.44.3
  • v3.2.44
  • v3.2.40
  • v3.2.13
  • v3.2.9
  • v3.2.8
  • v3.2.7
  • v3.2.6
  • v3.2.5
  • v3.2.4
  • v3.2.3
28 results

AlongsidePage.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    wikibot.py 1.68 KiB
    # documentation of dokuwiki xmlrpc commands: https://www.dokuwiki.org/devel:xmlrpc
    import config
    from xmlrpc.client import ServerProxy as Proxy, Error as wikiError
    import re
    import datetime
    
    def move_page(original_page, new_page, delete=False):
    	"""Moves a page, updates link to new page and flags or deletes the old one"""
    	with Proxy(config.WIKI_API_URL) as proxy:
    		# create new page with identical content #
    		page_content = proxy.wiki.getPage(original_page)
    		proxy.wiki.putPage(new_page, page_content, {"sum":"Moved from " + original_page})
    
    		# update back links to new page #
    		backLinks = proxy.wiki.getBackLinks(original_page)
    		reg = rf"\[\[\s*{original_page}\s*\|(.*?)\]\]" # regex for dokuwiki links we want to replace
    		_replacer = lambda matched : "[[" + new_page + "|" + matched.group(1) + "]]"
    		for page in backLinks:
    			content = proxy.wiki.getPage(page)
    			content = re.sub(reg, _replacer, content)
    			proxy.wiki.putPage(page, content, {"sum":"Update links from " +original_page+ " to " + new_page})
    
    		# either flag or delete original page #
    		if not delete:
    			proxy.dokuwiki.appendPage(original_page, "\n DELETEME This page was moved to "+ new_page,
    				{"sum":"Moved to " + new_page + " and marked page for deletion"}) 
    		else:
    			proxy.wiki.putPage(original_page, "", {"sum":"Moved to " + new_page}) # deletes original page
    
    
    def find_old_pages(timedelta, namespace=""):
    	"""Returns all pages whose rev is older than the given timedelta"""
    	with Proxy(config.WIKI_API_URL) as proxy:
    		pages = proxy.dokuwiki.getPagelist(namespace)
    		proxy_time = proxy.dokuwiki.getTime()
    		old_pages = [page for page in pages if (proxy_time - page.get('rev') > timedelta.total_seconds())] 
    		return old_pages