Example #1
0
    def _indexingRequest(self, request):
        """ Return a new request that can be used for index building.

        This request uses a security policy that lets the current user
        read any page. Without this policy some pages will not render,
        which will create broken pagelinks index.

        @param request: current request
        """
        from MoinMoin.security import Permissions
        from MoinMoin.user import User

        class SecurityPolicy(Permissions):
            def read(self, *args, **kw):
                return True

        user = User(request)
        user.may = SecurityPolicy(user)

        class FakeRequest(object):
            """ minimal request object for indexing code """
            def __init__(self, request, user):
                NAMES = """action cfg clock current_lang dicts form
                           getPragma getText href html_formatter
                           isSpiderAgent mode_getpagelinks page
                           parsePageLinks_running redirect redirectedOutput
                           rev rootpage script_root session setContentLanguage
                           setPragma theme uid_generator values write""".split()
                for name in NAMES:
                    value = getattr(request, name, None)
                    setattr(self, name, value)
                self.user = user

        return FakeRequest(request, user)