jenkins-bot merged this change.

View Change

Approvals: Matěj Suchánek: Looks good to me, but someone else must approve D3r1ck01: Looks good to me, approved jenkins-bot: Verified
[IMPR] derive ReplaceRobot from ExistingPageBot

- use ExistingPageBot to skip NoPage exception
- move isTitleExcepted and has_permission() checking
to skip_page method
- directly leave treat method if isTextExcepted or
new_text == original_text after replacements

Change-Id: Idbc1d9764b25ce7376f1199a12e57087fbd5a5eb
---
M scripts/replace.py
1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/scripts/replace.py b/scripts/replace.py
index e957427..6c50f31 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -156,7 +156,7 @@
# Imports predefined replacements tasks from fixes.py
from pywikibot import fixes
from pywikibot import i18n, textlib, pagegenerators
-from pywikibot.bot import SingleSiteBot
+from pywikibot.bot import ExistingPageBot, SingleSiteBot
from pywikibot.tools import (
chars,
deprecated,
@@ -498,7 +498,7 @@
return False


-class ReplaceRobot(SingleSiteBot):
+class ReplaceRobot(SingleSiteBot, ExistingPageBot):

"""A bot that can do text replacements.

@@ -713,46 +713,46 @@
semicolon = self.site.mediawiki_message('semicolon-separator')
return semicolon.join(summary_messages)

+ def skip_page(self, page):
+ """Check whether treat should be skipped for the page."""
+ if self.isTitleExcepted(page.title()):
+ pywikibot.warning(
+ 'Skipping {} because the title is on the exceptions list.'
+ .format(page))
+ return True
+
+ if not page.has_permission():
+ pywikibot.warning("You can't edit page {}".format(page))
+ return True
+
+ return super(ReplaceRobot, self).skip_page(page)
+
def treat(self, page):
"""Work on each page retrieved from generator."""
- if self.isTitleExcepted(page.title()):
- pywikibot.output(
- 'Skipping {0} because the title is on the exceptions list.'
- .format(page.title(as_link=True)))
- return
-
- try:
- # Load the page's text from the wiki
- original_text = page.get(get_redirect=True)
- if not page.has_permission():
- pywikibot.output("You can't edit page "
- + page.title(as_link=True))
- return
- except pywikibot.NoPage:
- pywikibot.output('Page {0} not found'
- .format(page.title(as_link=True)))
- return
-
+ original_text = page.text
applied = set()
new_text = original_text
last_text = None
context = 0
while True:
if self.isTextExcepted(new_text):
- pywikibot.output('Skipping {0} because it contains text '
+ pywikibot.output('Skipping {} because it contains text '
'that is on the exceptions list.'
- .format(page.title(as_link=True)))
- break
+ .format(page))
+ return
+
while new_text != last_text:
last_text = new_text
new_text = self.apply_replacements(last_text, applied,
page)
if not self.getOption('recursive'):
break
+
if new_text == original_text:
pywikibot.output('No changes were necessary in '
+ page.title(as_link=True))
- break
+ return
+
if self.addcat:
# Fetch only categories in wikitext, otherwise the others
# will be explicitly added.

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

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Idbc1d9764b25ce7376f1199a12e57087fbd5a5eb
Gerrit-Change-Number: 589900
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: Dvorapa <dvorapa@seznam.cz>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot (75)