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

Change subject: [bugfix] Call ExistingPageBot.skip_page() first
......................................................................

[bugfix] Call ExistingPageBot.skip_page() first

If a ExistingPageBot is subclassed and also has its own skip_page,
call `super().skip_page()` first to ensure that non existent pages
are filtered before other calls are made

- update several scripts
- add a warning in ExistingPageBot.skip_page method

Bug: T86491
Change-Id: Ic39c00c8bc3165fb6c7f89c1b8838bb15542e7b3
---
M pywikibot/bot.py
M scripts/blockpageschecker.py
M scripts/newitem.py
M scripts/noreferences.py
M scripts/reflinks.py
M scripts/replace.py
6 files changed, 27 insertions(+), 6 deletions(-)

Approvals:
  Matěj Suchánek: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/bot.py b/pywikibot/bot.py
index 68eb169..c6e238c 100644
--- a/pywikibot/bot.py
+++ b/pywikibot/bot.py
@@ -1959,7 +1959,12 @@
     """A CurrentPageBot class which only treats existing pages."""

     def skip_page(self, page: 'pywikibot.page.BasePage') -> bool:
-        """Treat page if it exists and handle NoPageError."""
+        """Treat page if it exists and handle NoPageError.
+
+        .. warning:: If subclassed, call `super().skip_page()` first to
+           ensure that non existent pages are filtered before other
+           calls are made
+        """
         if not page.exists():
             pywikibot.warning('Page {page} does not exist on {page.site}.'
                               .format(page=page))
diff --git a/scripts/blockpageschecker.py b/scripts/blockpageschecker.py
index 79f56a3..cd677e8 100755
--- a/scripts/blockpageschecker.py
+++ b/scripts/blockpageschecker.py
@@ -233,6 +233,9 @@
         #        "{} is sysop-protected : this account can't edit "
         #        "it! Skipping...".format(pagename))
         #    continue
+        if super().skip_page(page):
+            return True
+
         page.protection()
         if not page.has_permission():
             pywikibot.warning(
@@ -240,7 +243,7 @@
                 .format(page))
             return True

-        return super().skip_page(page)
+        return False

     def remove_templates(self):
         """Understand if the page is blocked has the right template."""
diff --git a/scripts/newitem.py b/scripts/newitem.py
index 693a79b..e6469d3 100755
--- a/scripts/newitem.py
+++ b/scripts/newitem.py
@@ -139,6 +139,9 @@

     def skip_page(self, page) -> bool:
         """Skip pages which are unwanted to treat."""
+        if super().skip_page(page):
+            return True
+
         if page.editTime() > self.lastEditBefore:
             pywikibot.output(
                 'Last edit on {page} was on {page.latest_revision.timestamp}.'
@@ -170,7 +173,7 @@
                              % (page, template))
             return True

-        return super().skip_page(page)
+        return False

     def treat_page_and_item(self, page, item) -> None:
         """Treat page/item."""
diff --git a/scripts/noreferences.py b/scripts/noreferences.py
index 35aff3d..59eb118 100755
--- a/scripts/noreferences.py
+++ b/scripts/noreferences.py
@@ -709,13 +709,16 @@

     def skip_page(self, page):
         """Check whether the page could be processed."""
+        if super().skip_page(page):
+            return True
+
         if self.site.sitename == 'wikipedia:en' and page.isIpEdit():
             pywikibot.warning(
                 'Page {} is edited by IP. Possible vandalized'
                 .format(page.title(as_link=True)))
             return True

-        return super().skip_page(page)
+        return False

     def treat_page(self) -> None:
         """Run the bot."""
diff --git a/scripts/reflinks.py b/scripts/reflinks.py
index 23ae56b..aa3de1a 100755
--- a/scripts/reflinks.py
+++ b/scripts/reflinks.py
@@ -541,10 +541,14 @@

     def skip_page(self, page):
         """Skip unwanted pages."""
+        if super().skip_page(page):
+            return True
+
         if not page.has_permission():
             pywikibot.warning("You can't edit page {page}" .format(page=page))
             return True
-        return super().skip_page(page)
+
+        return False

     def treat(self, page) -> None:
         """Process one page."""
diff --git a/scripts/replace.py b/scripts/replace.py
index 6d807db..e5a460e 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -648,6 +648,9 @@

     def skip_page(self, page):
         """Check whether treat should be skipped for the page."""
+        if super().skip_page(page):
+            return True
+
         if self.isTitleExcepted(page.title()):
             pywikibot.warning(
                 'Skipping {} because the title is on the exceptions list.'
@@ -658,7 +661,7 @@
             pywikibot.warning("You can't edit page {}".format(page))
             return True

-        return super().skip_page(page)
+        return False

     def treat(self, page) -> None:
         """Work on each page retrieved from generator."""

--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/789984
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: Ic39c00c8bc3165fb6c7f89c1b8838bb15542e7b3
Gerrit-Change-Number: 789984
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: D3r1ck01 <[email protected]>
Gerrit-Reviewer: JAn Dudík <[email protected]>
Gerrit-Reviewer: Matěj Suchánek <[email protected]>
Gerrit-Reviewer: Multichill <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to