jenkins-bot has submitted this change and it was merged.
Change subject: standardize unusedfiles.py
......................................................................
standardize unusedfiles.py
with a new UnusedFilesBot class that inherits .userPut()
from pywikibot.Bot (with built-in 'always' option)
Change-Id: Ib4272cf3009213300ac1d461fd18618dc260e925
---
M scripts/unusedfiles.py
1 file changed, 61 insertions(+), 60 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/scripts/unusedfiles.py b/scripts/unusedfiles.py
index 75ae002..3125e95 100644
--- a/scripts/unusedfiles.py
+++ b/scripts/unusedfiles.py
@@ -14,6 +14,7 @@
# (C) Leonardo Gregianin, 2007
# (C) Filnik, 2008
# (c) xqt, 2011-2014
+# (C) Pywikibot team, 2014
#
# Distributed under the terms of the MIT license.
#
@@ -21,7 +22,7 @@
#
import pywikibot
-from pywikibot import i18n, pagegenerators
+from pywikibot import i18n, pagegenerators, Bot
comment = {
'ar': u'صور للاستبعاد',
@@ -48,73 +49,73 @@
}
-def appendtext(page, apptext, always):
- if page.isRedirectPage():
- page = page.getRedirectTarget()
- if not page.exists():
- if page.isTalkPage():
- text = u''
+class UnusedFilesBot(Bot):
+
+ def __init__(self, site, **kwargs):
+ super(UnusedFilesBot, self).__init__(**kwargs)
+ self.site = site
+
+ def run(self):
+ template_image = i18n.translate(self.site,
+ template_to_the_image)
+ template_user = i18n.translate(self.site,
+ template_to_the_user)
+ except_text_translated = i18n.translate(self.site, except_text)
+ summary = i18n.translate(self.site, comment, fallback=True)
+ if not all([template_image, template_user, except_text_translated,
comment]):
+ raise pywikibot.Error(u'This script is not localized for %s site.'
+ % self.site)
+ self.summary = summary
+ generator = pagegenerators.UnusedFilesGenerator(site=self.site)
+ generator = pagegenerators.PreloadingGenerator(generator)
+ for image in generator:
+ if not image.exists():
+ pywikibot.output(u"File '%s' does not exist (see bug 69133)."
+ % image.title())
+ continue
+ if (except_text_translated.encode('utf-8')
+ not in image.getImagePageHtml() and
+ u'http://' not in image.text):
+ if template_image in image.text:
+ pywikibot.output(u"%s done already"
+ % image.title(asLink=True))
+ continue
+ self.append_text(image, u"\n\n" + template_image)
+ uploader = image.getFileVersionHistory().pop(0)['user']
+ user = pywikibot.User(image.site, uploader)
+ usertalkpage = user.getUserTalkPage()
+ msg2uploader = template_user % {'title': image.title()}
+ self.append_text(usertalkpage, msg2uploader)
+
+ def append_text(self, page, apptext):
+ if page.isRedirectPage():
+ page = page.getRedirectTarget()
+ if page.exists():
+ text = page.text
else:
- raise pywikibot.NoPage(u"Page '%s' does not exist" % page.title())
- else:
- text = page.text
- # Here you can go editing. If you find you do not
- # want to edit this page, just return
- oldtext = text
- text += apptext
- if text != oldtext:
- pywikibot.showDiff(oldtext, text)
- if not always:
- choice = pywikibot.inputChoice(
- u'Do you want to accept these changes?', ['Yes', 'No', 'All'],
- 'yNa', 'N')
- if choice == 'a':
- always = True
- if always or choice == 'y':
- page.text = text
- page.save(i18n.translate(pywikibot.Site(), comment,
- fallback=True))
+ if page.isTalkPage():
+ text = u''
+ else:
+ raise pywikibot.NoPage(u"Page '%s' does not exist" %
page.title())
+
+ oldtext = text
+ text += apptext
+ self.userPut(page, oldtext, text, comment=self.summary)
def main():
- always = False
+ options = {}
for arg in pywikibot.handleArgs():
if arg == '-always':
- always = True
+ options['always'] = True
- mysite = pywikibot.Site()
- # If anything needs to be prepared, you can do it here
- template_image = i18n.translate(pywikibot.Site(),
- template_to_the_image)
- template_user = i18n.translate(pywikibot.Site(),
- template_to_the_user)
- except_text_translated = i18n.translate(pywikibot.Site(), except_text)
- if not(template_image and template_user and except_text_translated):
- pywikibot.warning(u'This script is not localized for %s site.' %
mysite)
- return
- generator = pagegenerators.UnusedFilesGenerator()
- generator = pagegenerators.PreloadingGenerator(generator)
- for image in generator:
- if not image.exists():
- pywikibot.output(u"File '%s' does not exist (see bug 69133)."
- % image.title())
- continue
- if (except_text_translated.encode('utf-8')
- not in image.getImagePageHtml() and
- u'http://' not in image.text):
- pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
- % image.title())
- if template_image in image.text:
- pywikibot.output(u"%s done already"
- % image.title(asLink=True))
- continue
- appendtext(image, u"\n\n" + template_image, always)
- uploader = image.getFileVersionHistory().pop(0)['user']
- user = pywikibot.User(mysite, uploader)
- usertalkpage = user.getUserTalkPage()
- msg2uploader = template_user % {'title': image.title()}
- appendtext(usertalkpage, msg2uploader, always)
+ bot = UnusedFilesBot(pywikibot.Site(), **options)
+ try:
+ bot.run()
+ except pywikibot.Error as e:
+ pywikibot.showHelp()
+ pywikibot.warning(e)
if __name__ == "__main__":
--
To view, visit https://gerrit.wikimedia.org/r/148343
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib4272cf3009213300ac1d461fd18618dc260e925
Gerrit-PatchSet: 8
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: Mpaa <[email protected]>
Gerrit-Reviewer: Ricordisamoa <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits