jenkins-bot submitted this change.

View Change

Approvals: Meno25: Looks good to me, but someone else must approve Xqt: Looks good to me, approved jenkins-bot: Verified
[IMPR] revertbot.py: use site.rollbackpage() method

Bug: T106646
Change-Id: I159b7792b095b4fbb8c77a811aee6bc2ce272303
---
M pywikibot/site/__init__.py
M scripts/revertbot.py
2 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py
index 9526291..ee5f949 100644
--- a/pywikibot/site/__init__.py
+++ b/pywikibot/site/__init__.py
@@ -4871,27 +4871,30 @@
one that is not by the same user who made the last edit.

@param page: the Page to be rolled back (must exist)
-
+ @keyword user: the last user to be rollbacked;
+ default is page.latest_revision.user
"""
if len(page._revisions) < 2:
raise Error(
- 'Rollback of %s aborted; load revision history first.'
- % page.title(as_link=True))
- last_rev = page.latest_revision
- last_user = last_rev.user
+ 'Rollback of {} aborted; load revision history first.'
+ .format(page))
+
+ user = kwargs.pop('user', page.latest_revision.user)
for rev in sorted(page._revisions.values(), reverse=True,
key=lambda r: r.timestamp):
# start with most recent revision first
- if rev.user != last_user:
+ if rev.user != user:
break
else:
raise Error(
- 'Rollback of %s aborted; only one user in revision history.'
- % page.title(as_link=True))
- parameters = merge_unique_dicts(kwargs, action='rollback',
+ 'Rollback of {} aborted; only one user in revision history.'
+ .format(page))
+
+ parameters = merge_unique_dicts(kwargs,
+ action='rollback',
title=page,
token=self.tokens['rollback'],
- user=last_user)
+ user=user)
self.lock_page(page)
req = self._simple_request(**parameters)
try:
diff --git a/scripts/revertbot.py b/scripts/revertbot.py
index 38c071c..a5f5819 100755
--- a/scripts/revertbot.py
+++ b/scripts/revertbot.py
@@ -46,6 +46,8 @@
import pywikibot

from pywikibot.bot import OptionHandler
+from pywikibot.data import api
+from pywikibot.exceptions import Error
from pywikibot import i18n
from pywikibot.tools import deprecate_arg
from pywikibot.tools.formatter import color_format
@@ -123,25 +125,21 @@
page.save(comment)
return comment

- params = {
- 'action': 'rollback',
- 'title': page,
- 'user': self.user,
- 'token': self.site.tokens['rollback'],
- 'markbot': True,
- }
try:
- r = pywikibot.data.api.Request(self.site, parameters=params)
- r.submit()
- except pywikibot.data.api.APIError as e:
+ self.site.rollbackpage(page, user=self.user, markbot=True)
+ except api.APIError as e:
if e.code == 'badtoken':
pywikibot.error(
'There was an API token error rollbacking the edit')
- else:
- pywikibot.exception()
- return False
- return 'The edit(s) made in {} by {} was rollbacked'.format(
- page.title(), self.user)
+ return False
+ except Error:
+ pass
+ else:
+ return 'The edit(s) made in {} by {} was rollbacked'.format(
+ page.title(), self.user)
+
+ pywikibot.exception()
+ return False

def log(self, msg) -> None:
"""Log the message msg."""

To view, visit change 640437. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I159b7792b095b4fbb8c77a811aee6bc2ce272303
Gerrit-Change-Number: 640437
Gerrit-PatchSet: 6
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: Meno25 <meno25mail@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged