1.1 --- a/actions/ExportPDF.py Fri Nov 01 17:07:09 2013 +0100
1.2 +++ b/actions/ExportPDF.py Sun Nov 03 02:11:12 2013 +0100
1.3 @@ -9,6 +9,7 @@
1.4 from MoinMoin import caching
1.5 from MoinMoin.action import ActionBase, cache
1.6 from MoinMoin.wikiutil import escape
1.7 +from MoinMoin.Page import Page
1.8 from MoinSupport import ActionSupport, escattr, getFormatterClass, formatText, get_send_headers
1.9 from os.path import join
1.10 import subprocess, os, codecs
1.11 @@ -127,9 +128,11 @@
1.12 "paper_size_label" : escape(_("Paper size")),
1.13 "paper_size_options" : u"".join(paper_size_options),
1.14 "buttons_html" : buttons_html,
1.15 + "rev" : escattr(form.get("rev", ["0"])[0]),
1.16 }
1.17
1.18 return u"""\
1.19 +<input name="rev" type="hidden" value="%(rev)s" />
1.20 <table>
1.21 <tr>
1.22 <td class="label"><label>%(paper_size_label)s</label></td>
1.23 @@ -150,6 +153,15 @@
1.24 form = self.get_form()
1.25 request = self.request
1.26
1.27 + # Permit other revisions, but only if the current revision is readable.
1.28 +
1.29 + if not request.user.may.read(self.page.page_name):
1.30 + return 0, _("This page no longer allows read access.")
1.31 +
1.32 + self.page = Page(request, self.page.page_name, rev=int(form.get("rev", ["0"])[0]))
1.33 +
1.34 + # Check the paper size.
1.35 +
1.36 paper_size = form.get("paper-size", [""])[0]
1.37
1.38 if not paper_size in self._get_paper_sizes() or []:
1.39 @@ -157,7 +169,7 @@
1.40
1.41 # See if the revision is cached.
1.42
1.43 - cache_key = cache.key(request, content="%s-%s" % (self.page.rev, paper_size))
1.44 + cache_key = cache.key(request, content="%s-%s" % (self.page.get_real_rev(), paper_size))
1.45 cache_entry = caching.CacheEntry(request, self.page, cache_key, scope="item")
1.46
1.47 # Open any available cache entry and read it.