# HG changeset patch # User Paul Boddie # Date 1318372392 -7200 # Node ID dc606b999eb1e0580649084160fba46398c3c838 # Parent ea25178d273956741d33c2f36c1f29be27383434 Introduced approval of specific queue revisions. Added an HTML attribute-escaping function to the library. diff -r ea25178d2739 -r dc606b999eb1 ApproveChangesSupport.py --- a/ApproveChangesSupport.py Wed Oct 12 00:04:21 2011 +0200 +++ b/ApproveChangesSupport.py Wed Oct 12 00:33:12 2011 +0200 @@ -16,6 +16,7 @@ """ from MoinMoin import user +from MoinMoin.wikiutil import escape import re acl_pattern = re.compile(ur"^#acl .*$", re.UNICODE | re.MULTILINE) @@ -164,4 +165,7 @@ else: return request.form +def escattr(s): + return escape(s, 1) + # vim: tabstop=4 expandtab shiftwidth=4 diff -r ea25178d2739 -r dc606b999eb1 actions/ApproveChanges.py --- a/actions/ApproveChanges.py Wed Oct 12 00:04:21 2011 +0200 +++ b/actions/ApproveChanges.py Wed Oct 12 00:33:12 2011 +0200 @@ -14,8 +14,8 @@ Dependencies = ['pages'] from MoinMoin.action import ActionBase +from MoinMoin.Page import Page from MoinMoin.PageEditor import PageEditor -from MoinMoin.wikiutil import escape from ApproveChangesSupport import * # Action class and supporting functions. @@ -34,6 +34,8 @@ _ = self._ request = self.request fmt = request.formatter + form = get_form(request) + rev = form.get("rev") d = { "buttons_html" : buttons_html, @@ -54,6 +56,10 @@ ''' % d + if rev: + html += ''' +''' % {"rev" : escattr(rev[0])} + return html def do_action(self): @@ -80,12 +86,24 @@ target_page = PageEditor(request, target_page_name) # Save the target page, removing any protective ACL. + # First, the displayed revision must be retrieved. - body = self.page.get_raw_body() + form = get_form(request) + + # Get the revision or None. + + rev = form.get("rev") + if rev is None: + rev = self.page.current_rev() + else: + rev = int(rev[0]) + + page = Page(request, self.page.page_name, rev=rev) + body = page.get_raw_body() body = remove_access_control(request, body) try: - target_page.saveText(body, 0, comment=_("Changes to page approved.")) + target_page.saveText(body, 0, comment=_("Changes to page approved from queue revision %d.") % rev) except PageEditor.Unchanged: pass diff -r ea25178d2739 -r dc606b999eb1 to-do/approve-specific-version.txt --- a/to-do/approve-specific-version.txt Wed Oct 12 00:04:21 2011 +0200 +++ b/to-do/approve-specific-version.txt Wed Oct 12 00:33:12 2011 +0200 @@ -1,2 +1,3 @@ -The approval action should act like the revert action and operate on a specific -revision of each queued changes page. +Done! +(The approval action should act like the revert action and operate on a specific +revision of each queued changes page.)