def show(name): revision = request.args.get('rev') if revision: revision = Page.by_revision(revision) revision_requested = True else: revision = Page.by_name(name) revision_requested = False if revision is None: return (web.render_template('missing.html', revision_requested=revision_requested, page_name=name, protected=False), 404) return web.render_template('show.html', revision=revision)
def revert(name): """Revert an old revision.""" rev_id = request.args.get('rev') try: rev_id = int(rev_id) except: pass old_revision = page = None error = _('No such revision') if request.method == 'POST' and request.form.get('cancel'): return web.redirect(web.url_for('show', name=page_name)) if rev_id: old_revision = Page.by_revision(rev_id) if old_revision: new_revision = Page.by_name(name) if old_revision == new_revision: error = _('You tried to revert the current active ' \ 'revision.') elif old_revision.text == new_revision.text: error = _('There are no changes between the current ' \ 'revision and the revision you want to ' \ 'restore.') else: error = '' page = old_revision.page if request.method == 'POST': note = request.form.get('note', '') note = 'revert' + (note and ': ' + note or '') revision = Revision(page=page, text=old_revision.text, note=note) revision.save() db.commit() return web.redirect(web.url_for('show', name=name)) return web.render_template('revert.html', error=error, old_revision=old_revision, revision=page )