Skip to content
Snippets Groups Projects
Select Git revision
  • d65a147f6cfce955e09fdf91ab5d365482c7594b
  • master default protected
  • intros
  • live_sources
  • bootstrap4
  • modules
6 results

icalexport.py

Blame
  • Forked from Video AG Infrastruktur / website
    Source project has a limited visibility.
    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