Mercurial > moin > 1.9
view MoinMoin/action/revert.py @ 4109:e88baf535b48
fix backup action configuration (broke on windows due to backslashes in e.g. cache_dir), try 2.
cfg.backup_exclude is now just a function of filename, telling whether the file should be excluded.
By default, no file is excluded.
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Fri, 19 Sep 2008 21:41:40 +0200 |
parents | 4082eab1fe16 |
children | c2ee4633b9e8 c8be59640927 |
line wrap: on
line source
# -*- coding: iso-8859-1 -*- """ MoinMoin - revert a page to a previous revision @copyright: 2000-2004 Juergen Hermann <jh@web.de>, 2006-2008 MoinMoin:ThomasWaldmann, 2007 MoinMoin:ReimarBauer, 2008 MoinMoin:JohannesBerg @license: GNU GPL, see COPYING for details. """ from MoinMoin import wikiutil from MoinMoin.PageEditor import PageEditor from MoinMoin.action import ActionBase class revert(ActionBase): """ revert page action Note: the action name is the class name """ def __init__(self, pagename, request): ActionBase.__init__(self, pagename, request) self.use_ticket = True _ = self._ self.form_trigger = 'revert' self.form_trigger_label = _('Revert') self.method = 'POST' def is_allowed(self): # this is not strictly necessary because the underlying storage code checks # as well _ = self._ may = self.request.user.may allowed = may.write(self.pagename) and may.revert(self.pagename) return allowed, _('You are not allowed to revert this page!') def check_condition(self): """ checks valid page and rev """ _ = self._ if not self.request.rev: # same string as in PageEditor... note = _('You were viewing the current revision of this page when you called the revert action. ' 'If you want to revert to an older revision, first view that older revision and ' 'then call revert to this (older) revision again.') return note else: return None def do_action(self): """ revert pagename """ form = self.form comment = form.get('comment', [u''])[0] comment = wikiutil.clean_input(comment) if self.request.request_method != 'POST': return False, u'' rev = self.request.rev pg = PageEditor(self.request, self.pagename) try: msg = pg.revertPage(rev, comment) # make it show the current version... self.request.rev = None except PageEditor.RevertError, error: msg = unicode(error) except PageEditor.Unchanged, error: msg = unicode(error) return True, msg def get_form_html(self, buttons_html): """ creates the form """ _ = self._ d = { 'pagename': self.pagename, 'comment_label': _("Optional reason for reverting this page"), 'buttons_html': buttons_html, 'querytext': _('Really revert this page?'), 'rev': self.request.rev } return ''' <strong>%(querytext)s</strong> <table> <tr> <td class="label"><label>%(comment_label)s</label></td> <td class="content"> <input type="text" name="comment" size="80" maxlength="200"> <input type="hidden" name="rev" value="%(rev)d"> </td> </tr> <tr> <td></td> <td class="buttons"> %(buttons_html)s </td> </tr> </table> ''' % d def execute(pagename, request): """ Glue code for actions """ revert(pagename, request).render()