jenkins-bot merged this change.

View Change

Approvals: Huji: Looks good to me, approved jenkins-bot: Verified
[bugfix] Use Bot.userPut() method to handle PageSaveRelatedError

- Use Bot.userPut() method to handle PageSaveRelatedError
This method is called by a local save method to simplify the
parameters
- always use asynchronous parameter, otherwise it will be set
depending on "always" option
- userPut has its own user_confirm() method. Rewrite it and
just return True

Bug: T205205
Change-Id: I1f447a3767a447e144e35d43112eff9b388ffff5
---
M scripts/replace.py
1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/scripts/replace.py b/scripts/replace.py
index d358ff8..ab361b9 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -810,11 +810,10 @@
if choice == 'a':
self.options['always'] = True
if choice == 'y':
- page.text = new_text
- page.save(summary=self.generate_summary(applied),
- asynchronous=True,
+ self.save(page, original_text, new_text, applied,
+ show_diff=False, quiet=True,
callback=self._replace_async_callback,
- quiet=True)
+ asynchronous=True)
while not self._pending_processed_titles.empty():
proc_title, res = self._pending_processed_titles.get()
pywikibot.output('Page {0}{1} saved'
@@ -824,23 +823,10 @@
break

if self.getOption('always') and new_text != original_text:
- try:
- page.text = new_text
- page.save(summary=self.generate_summary(applied),
- callback=self._replace_sync_callback, quiet=True)
- except pywikibot.EditConflict:
- pywikibot.output('Skipping {0} because of edit conflict'
- .format(page.title(),))
- except pywikibot.SpamfilterError as e:
- pywikibot.output(
- 'Cannot change {0} because of blacklist entry {1}'
- .format(page.title(), e.url))
- except pywikibot.LockedPage:
- pywikibot.output('Skipping {0} (locked page)'
- .format(page.title(),))
- except pywikibot.PageNotSaved as error:
- pywikibot.output('Error putting page: {0}'
- .format(error.args,))
+ self.save(page, original_text, new_text, applied,
+ show_diff=False, quiet=True,
+ callback=self._replace_sync_callback,
+ asynchronous=False)
if self._pending_processed_titles.qsize() > 50:
while not self._pending_processed_titles.empty():
proc_title, res = self._pending_processed_titles.get()
@@ -848,6 +834,16 @@
.format(proc_title,
'' if res else ' not'))

+ def save(self, page, oldtext, newtext, applied, **kwargs):
+ """Save the given page."""
+ self.userPut(page, oldtext, newtext,
+ summary=self.generate_summary(applied),
+ ignore_save_related_errors=True, **kwargs)
+
+ def user_confirm(self, question):
+ """Always return True due to our own input choice."""
+ return True
+

def prepareRegexForMySQL(pattern):
"""Convert regex to MySQL syntax."""

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

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I1f447a3767a447e144e35d43112eff9b388ffff5
Gerrit-Change-Number: 589843
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: Bináris <wikiposta@gmail.com>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: Dvorapa <dvorapa@seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki@tools.wmflabs.org>
Gerrit-Reviewer: Huji <huji.huji@gmail.com>
Gerrit-Reviewer: Liuxinyu970226 <541329866@qq.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444@gmail.com>
Gerrit-Reviewer: jenkins-bot (75)
Gerrit-CC: Matěj Suchánek <matejsuchanek97@gmail.com>