# HG changeset patch # User Paul Boddie # Date 1383441072 -3600 # Node ID 4da7272243b598355b6ff9e17cf9fb0df004c22b # Parent 6ce8836f70752195591dbbec01a2a7192f923c36 Fixed revision export and added a check against the latest revision's ACL. diff -r 6ce8836f7075 -r 4da7272243b5 actions/ExportPDF.py --- a/actions/ExportPDF.py Fri Nov 01 17:07:09 2013 +0100 +++ b/actions/ExportPDF.py Sun Nov 03 02:11:12 2013 +0100 @@ -9,6 +9,7 @@ from MoinMoin import caching from MoinMoin.action import ActionBase, cache from MoinMoin.wikiutil import escape +from MoinMoin.Page import Page from MoinSupport import ActionSupport, escattr, getFormatterClass, formatText, get_send_headers from os.path import join import subprocess, os, codecs @@ -127,9 +128,11 @@ "paper_size_label" : escape(_("Paper size")), "paper_size_options" : u"".join(paper_size_options), "buttons_html" : buttons_html, + "rev" : escattr(form.get("rev", ["0"])[0]), } return u"""\ + @@ -150,6 +153,15 @@ form = self.get_form() request = self.request + # Permit other revisions, but only if the current revision is readable. + + if not request.user.may.read(self.page.page_name): + return 0, _("This page no longer allows read access.") + + self.page = Page(request, self.page.page_name, rev=int(form.get("rev", ["0"])[0])) + + # Check the paper size. + paper_size = form.get("paper-size", [""])[0] if not paper_size in self._get_paper_sizes() or []: @@ -157,7 +169,7 @@ # See if the revision is cached. - cache_key = cache.key(request, content="%s-%s" % (self.page.rev, paper_size)) + cache_key = cache.key(request, content="%s-%s" % (self.page.get_real_rev(), paper_size)) cache_entry = caching.CacheEntry(request, self.page, cache_key, scope="item") # Open any available cache entry and read it.