view MoinMoin/script/maint/cleancache.py @ 2940:d54b7635a9a7

refactor maint cleancache
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Mon, 05 Nov 2007 22:57:18 +0100
parents c0366b467edf
children 2572688e031a
line wrap: on
line source
# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - cleancache script

    globally delete cache files in data/pages/PageName/cache/ and /data/cache directories

    You will usually do this after changing MoinMoin code, by either upgrading
    version, installing or removing macros or changing the regex expression for dicts.
    This often makes the text_html and dict files invalid, so you have to remove them
    (the wiki will recreate them automatically).

    text_html is the name of the cache file used for compiled pages formatted
    by the wiki text to html formatter, A dict file does cache the pages which
    do fit to the page_group_regex variable.

    @copyright: 2005-2007 MoinMoin:ThomasWaldmann,
                2007 MoinMoin:ReimarBauer
    @license: GNU GPL, see COPYING for details.
"""

from MoinMoin import caching
from MoinMoin.Page import Page
from MoinMoin.script import MoinScript

class PluginScript(MoinScript):
    def __init__(self, argv, def_values):
        MoinScript.__init__(self, argv, def_values)

    def mainloop(self):
        self.init_request()
        request = self.request

        # clean page scope cache entries
        keys = ['text_html', 'pagelinks', ]
        pages = request.rootpage.getPageList(user='')
        for pagename in pages:
            arena = Page(request, pagename)
            for key in keys:
                caching.CacheEntry(request, arena, key, scope='item').remove()

        # clean wiki scope cache entries
        arena_key_list = [
            ('user', 'name2id'),
            ('wikidicts', 'dicts_groups'),
        ]
        for arena, key in arena_key_list:
            caching.CacheEntry(request, arena, key, scope='wiki').remove()