jenkins-bot submitted this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
[IMPR] Improvements for category_redirect.py

- Move record writing and log saving statements to teardown method.
This prepares splitting run method into setup and treat methods.

Change-Id: I0328f1005a0622077cf120155fe0afeb458f5d5e
---
M scripts/category_redirect.py
1 file changed, 28 insertions(+), 24 deletions(-)

diff --git a/scripts/category_redirect.py b/scripts/category_redirect.py
index 8d1c75d..5454262 100755
--- a/scripts/category_redirect.py
+++ b/scripts/category_redirect.py
@@ -286,23 +286,21 @@
.format(self.site))
return

- user = self.site.user() # invokes login()
- newredirs = []
+ self.user = self.site.user() # invokes login()
+ self.newredirs = []

localtime = time.localtime()
today = '%04d-%02d-%02d' % localtime[:3]
- edit_request_page = pywikibot.Page(
- self.site, 'User:{}/category edit requests'.format(user))
- datafile = pywikibot.config.datafilepath('{}-catmovebot-data'
- .format(self.site.dbName()))
+ self.datafile = pywikibot.config.datafilepath(
+ '{}-catmovebot-data'.format(self.site.dbName()))
try:
- with open(datafile, 'rb') as inp:
- record = pickle.load(inp)
+ with open(self.datafile, 'rb') as inp:
+ self.record = pickle.load(inp)
except IOError:
- record = {}
- if record:
- with open(datafile + '.bak', 'wb') as f:
- pickle.dump(record, f, protocol=config.pickle_protocol)
+ self.record = {}
+ if self.record:
+ with open(self.datafile + '.bak', 'wb') as f:
+ pickle.dump(self.record, f, protocol=config.pickle_protocol)
# regex to match soft category redirects
# TODO: enhance and use textlib._MultiTemplateMatchBuilder
# note that any templates containing optional "category:" are
@@ -344,11 +342,11 @@
if 'size' in catdata and int(catdata['size']):
# save those categories that have contents
nonemptypages.append(cat)
- if cat_title not in record:
- # make sure every redirect has a record entry
- record[cat_title] = {today: None}
+ if cat_title not in self.record:
+ # make sure every redirect has a self.record entry
+ self.record[cat_title] = {today: None}
with suppress(pywikibot.Error):
- newredirs.append('*# {} → {}'.format(
+ self.newredirs.append('*# {} → {}'.format(
cat.title(as_link=True, textlink=True),
cat.getCategoryRedirectTarget().title(
as_link=True, textlink=True)))
@@ -356,11 +354,11 @@
with suppress(Exception):
cat.save()

- # delete record entries for non-existent categories
- for cat_name in list(record.keys()):
+ # delete self.record entries for non-existent categories
+ for cat_name in list(self.record):
if pywikibot.Category(self.site,
self.catprefix + cat_name) not in catpages:
- del record[cat_name]
+ del self.record[cat_name]

pywikibot.output('\nMoving pages out of {} redirected categories.'
.format(len(nonemptypages)))
@@ -448,7 +446,7 @@
})
self.log_text.append(message)
elif found:
- record[cat_title][today] = found
+ self.record[cat_title][today] = found
message = i18n.twtranslate(
self.site, 'category_redirect-log-moved', {
'oldcat': cat.title(as_link=True, textlink=True),
@@ -461,23 +459,29 @@
with suppress(Exception):
cat.save()

- with open(datafile, 'wb') as f:
- pickle.dump(record, f, protocol=config.pickle_protocol)
+ self.teardown()
+
+ def teardown(self):
+ """Write self.record to file and save logs."""
+ with open(self.datafile, 'wb') as f:
+ pickle.dump(self.record, f, protocol=config.pickle_protocol)

self.log_text.sort()
self.problems.sort()
- newredirs.sort()
+ self.newredirs.sort()
comment = i18n.twtranslate(self.site, self.maint_comment)
message = i18n.twtranslate(self.site, 'category_redirect-log-new')
self.log_page.text = ('\n== %i-%02i-%02iT%02i:%02i:%02iZ ==\n'
% time.gmtime()[:6]
+ '\n'.join(self.log_text)
+ '\n* ' + message + '\n'
- + '\n'.join(newredirs)
+ + '\n'.join(self.newredirs)
+ '\n' + '\n'.join(self.problems)
+ '\n' + self.get_log_text())
self.log_page.save(comment)
if self.edit_requests:
+ edit_request_page = pywikibot.Page(
+ self.site, 'User:{}/category edit requests'.format(self.user))
edit_request_page.text = (self.edit_request_text
% {'itemlist': '\n' + '\n'.join(
(self.edit_request_item % item)

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

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I0328f1005a0622077cf120155fe0afeb458f5d5e
Gerrit-Change-Number: 668116
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-CC: Bharatkhatri <bharatkhatri351@gmail.com>
Gerrit-MessageType: merged