jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/640437 )

Change subject: [IMPR] revertbot.py: use site.rollbackpage() method
......................................................................

[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(-)

Approvals:
  Meno25: Looks good to me, but someone else must approve
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



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 https://gerrit.wikimedia.org/r/c/pywikibot/core/+/640437
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I159b7792b095b4fbb8c77a811aee6bc2ce272303
Gerrit-Change-Number: 640437
Gerrit-PatchSet: 6
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: D3r1ck01 <[email protected]>
Gerrit-Reviewer: Meno25 <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to