def revert_page(request, pagename, editor): if not request.user.may.revert(pagename): return log = editlog.EditLog(request, rootpagename=pagename) first = True rev = u"00000000" for line in log.reverse(): if first: first = False if repr(line.getInterwikiEditorData(request)) != editor: return else: if repr(line.getInterwikiEditorData(request)) != editor: rev = line.rev break if rev == u"00000000": # page created by spammer comment = u"Page deleted by Despam action" pg = PageEditor.PageEditor(request, pagename, do_editor_backup=0) try: savemsg = pg.deletePage(comment) except pg.SaveError, msg: savemsg = unicode(msg)
def mainloop(self): if debug: import codecs origtext = codecs.open('origtext', 'r', 'utf-8').read() origtext = origtext.replace('\r\n', '\n') changedtext = self.do_edit("", origtext) changedtext = changedtext.replace('\n', '\r\n') f = codecs.open('changedtext', 'w', 'utf-8') f.write(changedtext) f.close() else: self.init_request() request = self.request # Get all existing pages in the wiki pagelist = request.rootpage.getPageList(user='') for pagename in pagelist: #request = CLI.Request(url=url, pagename=pagename.encode('utf-8')) p = PageEditor.PageEditor(request, pagename, do_editor_backup=0) origtext = p.get_raw_body() changedtext = self.do_edit(pagename, origtext) if changedtext and changedtext != origtext: print "Writing %s ..." % repr(pagename) p._write_file(changedtext)
return else: if repr(line.getInterwikiEditorData(request)) != editor: rev = line.rev break if rev == u"00000000": # page created by spammer comment = u"Page deleted by Despam action" pg = PageEditor.PageEditor(request, pagename, do_editor_backup=0) try: savemsg = pg.deletePage(comment) except pg.SaveError, msg: savemsg = unicode(msg) else: # page edited by spammer oldpg = Page.Page(request, pagename, rev=int(rev)) pg = PageEditor.PageEditor(request, pagename, do_editor_backup=0) try: savemsg = pg.saveText(oldpg.get_raw_body(), 0, extra=rev, action="SAVE/REVERT") except pg.SaveError, msg: savemsg = unicode(msg) return savemsg def revert_pages(request, editor, timestamp): _ = request.getText editor = wikiutil.url_unquote(editor) timestamp = int(timestamp * 1000000) log = editlog.EditLog(request) pages = {} revertpages = [] for line in log.reverse():